我想從這樣的其他服務綁定服務:什麼時候完全onServiceConnected有界服務會被調用?
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實例的引用,但有一件事我不明白:在onStart
的調用之後調用onServiceConnected
回調。正如我在Android的文檔中看到的那樣,the callback is running on the main thread - 但我能指望它會始終按照我的情況順序發生嗎? onCreate - > onStart - > onServiceConnected?
是。下面應該用大紅色字母表示:**不要在等待服務連接時阻塞活動/服務啓動器線程!**(好吧,不要阻止它,但是在服務綁定的情況下它會加倍) – snuk182
-1,開發指南是錯誤的。 'bindService()'確實返回一個值。從http://developer.android.com/reference/android/content/Context.html,「如果您已成功綁定到服務,則返回true;如果未建立連接,則返回false,因此您將不會收到服務對象「。 –