我想了解Application
中的Android
对象生命周期,尤其是IntentService
。
如果IntentService
启动,Application
对象是否会随之启动?这个的确切顺序是什么?最后,在这种情况下什么时候会被销毁?
答案 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想要关闭托管您的应用程序的操作系统进程时,它只会杀死该进程。