何时调用Application的onCreate()方法?

时间:2011-10-07 11:15:12

标签: android-activity oncreate application-lifecycle android

在我的Android应用程序中,我有一个扩展DefaultApplication的{​​{1}}类,并在其android.app.Application中绑定了一些服务,这些服务将在我的其他活动中使用。< / p>

此外,我有一个onCreate(),可以侦听和接收C2DM消息。当此接收器在应用程序未运行时收到消息时,它将触发一个对话框,显示即将发送的消息,它将启动我的应用程序的活动。

我的问题是,当我开始与BroadcastReceiver没有任何互动的活动时,我的DefaultApplication的{​​{1}}是否会被调用,因为该应用程序的活动已经开始了?

以下是DefaultApplication的定义和清单:

onCreate()

Manifest看起来像这样:

DefaultApplication

3 个答案:

答案 0 :(得分:42)

仅限第一次。

当Activity启动并且未加载应用程序时,将调用两个onCreate()方法。

但是对于随后的Activity启动,将不会调用onCreate()的应用程序。

答案 1 :(得分:32)

您可以在onCreate被调用here时找到正式答案。

  

在应用程序启动时,在任何活动,服务之前调用   或创建了接收者对象(不包括内容提供者)。   实现应该尽可能快(例如使用懒惰   初始化状态)因为在这个函数中花费的时间   直接影响开始第一项活动的表现,   服务或流程中的接收者。如果重写此方法,请执行   一定要打电话给super.onCreate()。

答案 2 :(得分:13)

请注意,如果定义任何服务在其他进程中运行,例如使用android:process=,然后将再次为该进程调用应用程序的onCreate()

例如,请参阅Android Application class method onCreate being called multiple times