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

时间:2016-01-23 13:57:12

标签: android android-intent android-service android-lifecycle android-intentservice

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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

如果您的IntentService完成并停止,Android最终会在onDestroy()实例上调用IntentService。此时,如果操作系统进程中没有其他活动组件,Android可能会决定终止操作系统进程,或者可能会暂时停止操作系统进程。

如果Android需要再次启动IntentService并且您的应用程序仍然存在实时操作系统进程,则Android将不会创建新的操作系统进程,只会重用现有的操作系​​统进程。在这种情况下,Application实例已经存在,因此Android不需要实例化新实例。 Android只会创建IntentService的新实例,调用IntentService.onCreate()并启动IntentService

Application实例永远不会被销毁。当Android想要关闭托管您的应用程序的操作系统进程时,它只会杀死该进程。