当 IntentService 启动时,Application 对象会启动吗?

When IntentService starts does Application object start?

我想了解 Android 中的 Application 对象生命周期,尤其是 IntentService

如果IntentService启动,Application对象会随之启动吗?确切的顺序是什么?最后,这种情况下什么时候销毁?

Application 实例是单例。每当 Android 创建一个 OS 进程来托管应用程序的 Android 组件 (Activity, Service, BroadcastReceiver, Provider) 时,它会执行以下操作:

  • 创建一个新的 Application 实例(它将调用那个 class 的构造函数)
  • 在新的 Application 实例上调用 onCreate()

之后,Android 实例化必要的组件(调用该组件的构造函数),然后在该组件上调用 onCreate()

IntentService的例子中,你应该看到以下内容(按顺序):

  • 创建 Application 的新实例(调用 Application 的构造函数)
  • 致电Application.onCreate()
  • 创建 IntentService 的新实例(调用 IntentService 的构造函数)
  • 致电IntentService.onCreate()

如果您的 IntentService 完成并停止,Android 最终将在 IntentService 实例上调用 onDestroy()。此时,如果 OS 进程中没有其他活动组件, Android 可能会决定杀死 OS 进程,或者它可能会留下 OS 进程一会儿。

如果 Android 需要再次启动您的 IntentService 并且您的应用程序仍有一个实时 OS 进程,Android 将不会创建新的 OS process 它只会重用现有的。在这种情况下,Application 实例已经存在,因此 Android 不需要实例化一个新实例。 Android 只是创建了一个新的 IntentService 实例,调用 IntentService.onCreate() 并启动了 IntentService.

Application 实例永远不会被销毁。当 Android 想要关闭托管您的应用程序的 OS 进程时,它只会终止该进程。