2013-11-22 42 views
0

我想知道在應用程序運行時(可能在後臺)運行時保持服務運行的最佳方式,然後在應用程序結束時停止服務(本例中的應用程序有完全停止,不在後臺)。保持服務與應用程序同步

另一個子問題是:如何在應用程序停止時停止服務?

我意識到一個解決方案是使用BoundServices,但這是最好的方式還是足夠好? 例如,如果一項活動綁定了一項服務,然後系統殺死該活動並將其再次活動,那麼該服務將如何運作?還是還有其他問題我不知道?

什麼是最好的實施方式?謝謝。

回答

0

結賬http://developer.android.com/guide/components/bound-services.html。 綁定服務是客戶端 - 服務器接口中的服務器。綁定服務允許組件(如活動)綁定到服務,發送請求,接收響應,甚至執行進程間通信(IPC)。 綁定服務通常只在服務於其他應用程序組件時才存在,並且不會無限期地在後臺運行。

有兩個選項來啓動服務:1. bindService()到活動 2. startForeground()和綁定,而它運行

選項1,只要活動是針對只運行和可運行的活動。 (例如使用服務下載文件) 只要應用程序正在運行(即使活動在後臺),選項2也會運行此選項要求您的服務在通知欄中列出。

您可以通過調用stopSelf(int)(我不認爲這在當前綁定活動時起作用)或者您可以從活動調用stopService()來停止服務。

至於系統殺死活動的問題....不知道你的服務將處理它很難給出如何處理這種情況的建議。在大多數情況下,在前臺運行的服務將是系統嘗試回收的最後一個資源。如果系統殺死該活動,那麼將調用onDestory方法的服務,在那裏你應該做一些清理工作,以便下一次啓動時,你可以繼續安全的莊園。

http://developer.android.com/images/service_lifecycle.png

+0

我已經更新了這個問題,請參考它。謝謝 –

相關問題