私はIBinder経由でデータベースにバインドする必要があるアプリケーションに取り組んでいます。私は、アプリケーションのサブクラスにフレームワークの初期化を入れることを計画していました。そのようなものはプレゼンテーション関連ではなく、アプリケーションごとに1回インスタンス化されることがわかっています。Androidアプリケーションの起動シーケンス
public class MyApplication extends MultiDexApplication {
public void onCreate() {
super.onCreate();
// Bind to the db server
Intent intent = new Intent(getBaseContext(), DB.BIND_ADDRESS);
super.bindService(intent,
new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
DB.start(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
DB.shutdown();
}
},
Context.BIND_AUTO_CREATE
);
}
}
私はに実行する問題は、私の活動が開始されるまでの私のServiceConnection.onServiceConnected()へのコールバックが行われていないことであると私は活動を表示するために利用可能なデータベースを必要とするので、それが問題ですデータ。私は現在この動作を見ています。
myApplication.onCreate()
myActivity.onCreate()
myActivity.onStart()
serviceConnection.onServiceConnected()
これは、自分のアクティビティでonStart()が呼び出されたときにデータベースがまだ接続されていないために発生します。
私はむしろ、このインフラストラクチャの初期化をアクティビティで移動する必要はありません。だから私は2つの質問があります。
- はonServiceConnected()が呼び出された まで待機するapplication.onCreateをブロックする方法はありますか?これはシングル スレッドです私はどのように表示されません。
- このは、私は、次の起動シーケンスを有するよう
その 初期化を完了した前に私のアプリケーションにどの 活動)
myApplication.onCreate()
serviceConnection.onServiceConnected()
myActivity.onCreate()
myActivity.onStart()
任意のONSTARTを(起動しないようにアンドロイドを伝えるためにそこの方法です
または
myApplication.onCreate()
myActivity.onCreate()
serviceConnection.onServiceConnected()
myActivity.onStart()
からフェッチすることであるように行うための方法はありませんか? –
アクティビティのonStartが呼び出される前にインフラストラクチャの初期化を完了したい。 –
私はあなたの意見を持っています。 –