我有一個基本活動類來實現所有活動的通用行爲。所有這些擴展了這個BaseActivity。當應用程序轉到後臺時使用公共基本活動停止服務
我綁定到BaseActivity的onStart方法中的服務,並在onStop方法中有條件地解除。有條件地,我的意思是根據用戶選擇的某個選項,當應用程序轉到後臺時,服務應該或不應該在後臺繼續運行。
問題是,有時服務會在不應該運行的時候繼續運行(也就是說,當它的選項被啓用,並且unbindService()被有效地調用時)。
我在想,在每次活動變更時,服務都會被解除綁定。由於綁定的服務是引用計數的,可能我的服務綁定的次數多於未綁定的,所以這就是爲什麼它在最後保持運行的原因,即使我調用unbindService()。
此外,documentation說一些事:
你應該平時配對綁定和解除綁定在客戶生命週期的配套產品啓動,拆除的時刻。例如:
如果您只需要在活動可見的情況下與服務交互,則應在onStart()期間進行綁定,並在onStop()期間進行解除綁定。
如果您希望活動即使在後臺停止時也能收到回覆,那麼您可以在onCreate()期間進行綁定,並在onDestroy()期間進行解除綁定。請注意,這意味着您的活動需要在整個運行期間(即使在後臺運行)使用該服務,因此如果該服務位於另一個進程中,那麼您將增加該進程的權重,並且系統更有可能會殺了它。
由於我試圖實現這兩個選項,應該採取什麼樣的最佳方法來實現呢?
看看我對這個問題的回答(http://stackoverflow.com/questions/10485342/how-to-handle-ipc-between-a-service-and-an-activity-和它的subactivity/10519846#10519846)我認爲這是一個甜心r方法比不斷地綁定/解除綁定 – 2013-04-25 16:14:33
我的回答錯了,請取消選中,以便我可以刪除它。 – 2013-04-26 16:07:47
該「某處」的鏈接是http://developer.android.com/guide/components/services.html – 2013-04-26 16:14:34