在我的Android应用程序中,我有一个扩展DefaultApplication
的{{1}}类,并在其android.app.Application
中绑定了一些服务,这些服务将在我的其他活动中使用。< / p>
此外,我有一个onCreate()
,可以侦听和接收C2DM消息。当此接收器在应用程序未运行时收到消息时,它将触发一个对话框,显示即将发送的消息,它将启动我的应用程序的活动。
我的问题是,当我开始与BroadcastReceiver
没有任何互动的活动时,我的DefaultApplication
的{{1}}是否会被调用,因为该应用程序的活动已经开始了?
以下是DefaultApplication
的定义和清单:
onCreate()
Manifest看起来像这样:
DefaultApplication
答案 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