2012-03-13 66 views
2

我有一個啓動服務的活動。當活動關閉時,我希望服務在後臺繼續運行。我在這裏有幾個問題。從android活動綁定到服務

關閉活動畫面會導致活動實際停止嗎?或者我需要強行阻止它使其停止?

如果關閉屏幕確實會導致它停止,那麼我假設我需要使用startService來啓動它。那是對的嗎?如果是這種情況,下次活動開始時是否有辦法處理正在運行的服務?如果不是這種情況,那麼我可以綁定到服務。

回答

3

當您的Activity不再顯示在屏幕上時,它會停止。停止綁定到ServiceActivity不會停止Service。但是,當Activity調用onDestroy()以確保您沒有任何懸掛處理程序等時,您需要確保從Service解除綁定。

您可以按照與第一次相同的方式重新綁定到正在運行的Service。發送Intent以啓動已運行的Service不會創建它的第二個實例,因此這很安全。

開始Service的一個好方法就是使用Context.BIND_AUTO_CREATE參數來啓動bindService()

所有這些的細節可以在Android docs about bound services找到。起初可能有點混亂。緊跟教程代碼,因爲它聽起來像你的問題映射到他們提供的樣本。

+0

是的,我認爲你完美地回答了這個問題。謝謝。我一直在閱讀這些文檔,但這是很好的說明。作爲一個快速跟進(也許我應該打開另一個問題)。在綁定到服務之後,它看起來並不需要啓動它(它的onCreate方法會自動調用)。那是對的嗎? – 2012-03-13 00:45:46

+0

這是正確的。 'Context.BIND_AUTO_CREATE'參數確保它在尚未開始時啓動。事實上,您無法綁定到未啓動的服務,因此服務在綁定發生之前就已啓動。 – Argyle 2012-03-13 00:48:18