我想了解Android
中的Application
對象生命週期,尤其是IntentService
。當IntentService啓動時,Application對象是否啓動?
如果IntentService
開始,Application
對象是否隨它一起啓動?那麼這個確切的順序是什麼?最後,在這種情況下,它何時會被銷燬?
我想了解Android
中的Application
對象生命週期,尤其是IntentService
。當IntentService啓動時,Application對象是否啓動?
如果IntentService
開始,Application
對象是否隨它一起啓動?那麼這個確切的順序是什麼?最後,在這種情況下,它何時會被銷燬?
Application
實例是一個單例。每當Android的創建一個操作系統進程託管的應用程序的Android的組件(Activity, Service, BroadcastReceiver, Provider
),它執行以下操作:
Application
實例(這將調用類的構造函數)onCreate()
上新Application
實例後認爲,Android則實例化所需的組件(調用構造該組件),然後該組件調用onCreate()
。
在IntentService
的例子中,你應該看到以下(按順序):
Application
創建新實例(而Application
調用構造函數)Application.onCreate()
IntentService
新實例(致電構造函數IntentService
)IntentService.onCreate()
如果您的IntentService
完成並停止,則Android將最終在IntentService
實例上調用onDestroy()
。此時,如果操作系統進程中沒有其他活動組件,Android可能會決定終止操作系統進程,或者可能會暫時離開操作系統進程。
如果Android需要再次啓動您的IntentService
,並且您的應用程序仍然存在實時操作系統進程,則Android不會創建新的OS進程,而只會重用現有的進程。在這種情況下,Application
實例已經存在,所以Android不需要實例化一個新實例。 Android只是創建一個新實例IntentService
,調用IntentService.onCreate()
並啓動IntentService
。
Application
實例永遠不會被銷燬。當Android想要關閉託管應用程序的操作系統進程時,它只會殺死進程。
@Onik殺死操作系統進程不會導致「應用程序」實例的破壞(在對象意義上)。操作系統只是讓這個過程「消失」。不能保證任何「清理」將實際發生。您還會注意到'Application'類中沒有'onDestroy()'方法。 –
正確。 _「永不摧毀」_,沒有澄清似乎讓我感到困惑,而且可能是爲了別人。 – Onik