回答

6

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想要關閉託管應用程序的操作系統進程時,它只會殺死進程。

+0

@Onik殺死操作系統進程不會導致「應用程序」實例的破壞(在對象意義上)。操作系統只是讓這個過程「消失」。不能保證任何「清理」將實際發生。您還會注意到'Application'類中沒有'onDestroy()'方法。 –

+1

正確。 _「永不摧毀」_,沒有澄清似乎讓我感到困惑,而且可能是爲了別人。 – Onik

相關問題