次のような別のサービスからサービスをバインドしようとしています:
public class ServiceA extends Service {
private ServiceB mDataService;
private boolean mIsBound;
@Override
public void onCreate(){
super.onCreate();
doBindService();
/* ... */
}
@Override
public void onStart(final Intent intent, final int startId){
/*...*/
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mDataService = ((ServiceB.LocalBinder)service).getService();
}
public void onServiceDisconnected(ComponentName className) {
mDataService = null;
}
};
void doBindService() {
bindService(new Intent(ServiceA.this, ServiceB.class), mConnection, Context.BIND_AUTO_CREATE);
mIsBound = true;
}
void doUnbindService() {
if (mIsBound) {
unbindService(mConnection);
mIsBound = false;
}
}
}
これは goolge のサンプルから取った簡単なスニペットです :) コードは問題なく動作し、mDataService は ServiceB インスタンスへの参照を保持していますが、理解できないことが 1 つありonServiceConnected
ますonStart
。Androidのドキュメントで見たように、コールバックはメインスレッドで実行されていますが、私の場合は常にこの順序で発生すると期待できますか? onCreate -> onStart -> onServiceConnected ?