2012-04-17 213 views
2

我有一個由多個活動組成的應用程序。所有活動必須訪問本地服務。我想,當我啓動應用程序要啓動的服務,並停止在Android開始/停止服務

一)應用程序被破壞(返回鍵)

二)應用程序停止(Home鍵)

C)設備處於深度睡眠狀態(電源鍵)

基本上,服務不應在沒有可見活動時運行。

我在onResume()中的每個活動中綁定服務,並在onPause()中的每個活動中解除綁定服務。不幸的是,每當我切換活動時都會重新創建服務,因爲服務在新活動綁定它之前會被解除綁定。

現在有人如何防止?

回答

1

假設你與Context.BIND_AUTO_CREATE綁定,那麼你幾乎就在那裏。將服務綁定到onStart()並將其解除綁定到onStop()。您應該發現第二個活動的開始發生在應用程序從第一個切換到第二個活動時第一個活動的停止。我在我的應用程序中使用了這種技術,並記錄了所有的方法;

FIRST Activity onCreate 
FIRST Activity onStart 
FIRST Activity onResume 
FIRST Activity onPause 
SECOND Activity onCreate 
SECOND Activity onStart 
SECOND Activity onResume 
FIRST Activity onStop 

所以對於一個短暫的瞬間兩項活動被綁定到服務,沒有任何傷害都:當我切換它們發生的順序。當沒有活動被綁定時,服務將停止。

+0

非常感謝,這就是我一直在尋找的! – osiris81 2012-04-17 20:14:40

0

看看this

但是,如果您選擇執行onStartCommand()回調 方法,那麼你必須明確停止服務,因爲該服務 現在被認爲是開始。在這種情況下,服務一直運行到 服務會停止使用stopSelf()或其他組件調用 stopService(),而不管它是否綁定到任何客戶端。