我有一個啓動服務的活動。當活動關閉時,我希望服務在後臺繼續運行。我在這裏有幾個問題。從android活動綁定到服務
關閉活動畫面會導致活動實際停止嗎?或者我需要強行阻止它使其停止?
如果關閉屏幕確實會導致它停止,那麼我假設我需要使用startService
來啓動它。那是對的嗎?如果是這種情況,下次活動開始時是否有辦法處理正在運行的服務?如果不是這種情況,那麼我可以綁定到服務。
我有一個啓動服務的活動。當活動關閉時,我希望服務在後臺繼續運行。我在這裏有幾個問題。從android活動綁定到服務
關閉活動畫面會導致活動實際停止嗎?或者我需要強行阻止它使其停止?
如果關閉屏幕確實會導致它停止,那麼我假設我需要使用startService
來啓動它。那是對的嗎?如果是這種情況,下次活動開始時是否有辦法處理正在運行的服務?如果不是這種情況,那麼我可以綁定到服務。
當您的Activity
不再顯示在屏幕上時,它會停止。停止綁定到Service
的Activity
不會停止Service
。但是,當Activity
調用onDestroy()
以確保您沒有任何懸掛處理程序等時,您需要確保從Service
解除綁定。
您可以按照與第一次相同的方式重新綁定到正在運行的Service
。發送Intent
以啓動已運行的Service
不會創建它的第二個實例,因此這很安全。
開始Service
的一個好方法就是使用Context.BIND_AUTO_CREATE
參數來啓動bindService()
。
所有這些的細節可以在Android docs about bound services找到。起初可能有點混亂。緊跟教程代碼,因爲它聽起來像你的問題映射到他們提供的樣本。
是的,我認爲你完美地回答了這個問題。謝謝。我一直在閱讀這些文檔,但這是很好的說明。作爲一個快速跟進(也許我應該打開另一個問題)。在綁定到服務之後,它看起來並不需要啓動它(它的onCreate方法會自動調用)。那是對的嗎? – 2012-03-13 00:45:46
這是正確的。 'Context.BIND_AUTO_CREATE'參數確保它在尚未開始時啓動。事實上,您無法綁定到未啓動的服務,因此服務在綁定發生之前就已啓動。 – Argyle 2012-03-13 00:48:18