私はAndroid開発にまったく慣れておらず、バインドされたサービスの概念に苦労しています
onCreate
アクティビティのメソッドで サービスをアクティビティにバインドしました
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
mConnection
匿名クラスでコールバック メソッドServiceConnection
をオーバーライドしたオブジェクトですonServiceConnected
コールバックでmService
は、(タイプ のクラス メンバーでLibraryService
ありLibraryService
、 のサブクラスです) は、バインド先のオブジェクトをService
参照するように設定されています。LibraryService
mService = binder.getService();
onCreate で bindService を呼び出した後、mService 参照を介して LibraryService を呼び出すことができると思いましたが、この時点ではまだ null に設定されており、onServiceConnected コールバックが実行されていないことを示しています。
mService
Log を使用してメソッドによって生成された文字列の値を出力しようとしました。
if (mService != null) {
Log.d(LOG_TAG, "In onCreate getLogFileName string value: " + mService.getLogFileName("pulse"));
} else {
Log.d(LOG_TAG, "In onCreate getLogFileName string value: null");
}
私が述べたように-onCreateではまだnullでした。次に、同じログコードをonStartとonResumeに追加しましたが、mServiceはまだnullです
私の質問は、そのコールバックが実行されるのはいつですか? メソッドの本体内で発生する必要があると思っていましたonCreate
が、明らかにそうではありません。Androidシステムによってコールバックが実行される方法/タイミングについて、いくつかのポインターが必要だと思います
mService がインスタンス化され、そのステートメントにヒットするステートメントにブレークポイントを設定したので、コールバックが実行されることはわかっています。いつ発生するのかわかりません。つまり、OK がいつmService
設定されたかをどのように知ることができますか? OnServiceConnected
コールバックの本体内でのみアクセスできますか?