回答

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

相关问题