我很新的Android開發人員,並與何時可以在Android Activity生命週期中調用綁定服務?
我在活動
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
mConnection
的onCreate
方法結合的服務活動的綁定服務的概念掙扎是一個ServiceConnection
對象我已經覆蓋了onServiceConnected
回調方法在一個匿名類
在回調,mService
(這是LibraryService
類型的一個類的成員,LibraryService
是我的Service
子類)設置爲引用的LibraryService
對象,我們結合:
mService = binder.getService();
我認爲在的onCreate調用bindService後,我會再能夠調用通過MSERVICE參考LibraryService,但它是此時仍設置爲null,表示onServiceConnected回調尚未執行。
我試圖打印使用登錄由mService
方法生成的字符串的值:
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空,我然後加入相同的日誌的代碼來調用onStart和onResume但mService仍爲空
我的問題是什麼時候該回調得到執行?我原以爲它必須發生在onCreate
方法的內部,但顯然不是。我想我需要在Android系統執行回調的方式/時間方面需要一些指示器
我知道回調得到執行,因爲我在語句中放置了一個斷點,其中mService被實例化並且它碰到該語句。我只是不明白什麼時候發生,即如何知道何時可以假設mService
已被設置?我只能在OnServiceConnected
回調的主體中訪問它嗎?
這看起來像一些非常基本的東西,我應該理解 - 這是一個java廣泛的東西或特定於android(我正在考慮什麼谷歌fid幾個入門教程) – bph
這是純java:你可以直接看java官方教程,併發部分。 http://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html – user1610075