2014-10-01 36 views
1

我有2個關於服務的onDestroy()在Android的服務

1.Will一個服務的onDestroy()方法的onDestroy()方法的問題,如果該服務被由於缺乏系統殺死被稱爲的記憶。

2.如果服務被終止,將會調用服務的onDestroy()方法,因爲啓動該服務的應用程序已在重新發送的應用程序屏幕中被用戶刷掉。

回答

2

第一個問題。

基於我以前的經驗和Android開發文檔。 onDestroy()即使服務被系統殺死,也會調用服務的方法.Google Android開發者文檔在下面。

服務既可以啓動,也可以綁定連接。在 這樣的情況下,系統將保持該服務運行,只要 或者它啓動或者有一個或多個連接到它的Context.BIND_AUTO_CREATE標誌。一旦這兩種情況都不成立,就會調用服務的onDestroy()方法,並且服務有效終止 。從onDestroy()返回後,所有清理(停止線程,取消註冊接收器)應該完成。

第二個問題。

如果您想在關閉應用程序時關閉服務,那麼是的。 Aneroid服務在後臺運行,通常在你摧毀你的應用程序時不會被殺死。

+0

我不希望我的服務被殺死(在任何情況下),直到我調用stopService()。在onStartCommand()中返回START_REDELIVER_INTENT是唯一的方法嗎? – DrkStr 2014-10-01 08:25:59

+0

如果啓動服務,則可以定義何時必須停止此服務。但是,如果設備通過內存管理停止服務,則可以調用onDestroy()方法的服務。 – 2014-10-01 08:42:18

+0

所以我只是在onDestroy()中調用startService(intent)? – DrkStr 2014-10-01 09:07:23

3
  1. 當系統終止服務時,系統會調用onDestroy,但是當您的應用程序進程終止時,onDestroy可能不會被調用。

  2. onDestroy()將被稱爲IF服務因此被終止。 (情況並非總是如此)請參閱此discussion瞭解更多信息。