Android 应用onCreate,什么时候调用

Android Application onCreate, when is it called

我仍然不明白 Application(不是 Activity)生命周期是怎样的,

当您启动 GUI 时,很明显会调用 Application 的 onCreate 方法。

但是,它是否在以下任何或所有情况下启动?

应用程序进程将保持活动状态多长时间?

现在我遇到一个问题,我发现应用程序(进程)在我 close/kill 应用程序后重新启动。然而,没有任何实现来实现这种行为。

But, is it started in ANY or ALL of the following cases?

您的 Application 实例是作为启动流程的一部分创建的。

App Widget is visible

仅仅可见与您的应用程序及其流程无关。您的应用程序及其进程将参与填充应用程序小部件、创建时和更新时。例如,如果 updatePeriodMillis 正在触发更新,而当时间到来时,您没有进程,那么 Application 实例将作为启动进程的一部分在 AppWidgetProvideronUpdate().

调用

Broadcast receiver receives something

如果您的进程已经存在,那么您的 Application 实例已经存在。如果您的进程不存在,那么在使用 onReceive().

调用 BroadcastReceiver 之前,将创建一个 Application 实例作为启动进程的一部分

Push notification arrives to device and show message

如果您指的是 GCM,因为这是广播,请参见上文。

Push notification is clicked after the app has been closed

我不明白你的意思。

Service is started

如果您的代码正在启动服务,那么您的进程已经 运行 并且您已经有一个 Application。如果某个其他进程正在启动您的服务,而您的进程不是 运行,那么会在 Service 之前创建一个 Application,作为创建您的进程的一部分。

And how long will the Application process will be kept alive?

如果"Application process",你的意思是"process",粗略地说,你的过程将持续一毫秒到一千年之间。它会一直存在,直到 Android 终止它以释放系统 RAM 给其他应用程序,或者直到某些东西专门摆脱它(例如,"task killer",在设置中强制停止)。

应用程序 onCreate() 在应用程序停止时调用,然后启动。

例如:

  • 您在应用未 运行 时启动您的应用(第一次 运行 它在会话中或者您在强制停止它后启动它)

  • 你每隔 activity 退出很长一段时间(它不会立即被杀死!)并且 Android 决定关闭你的应用程序并重新启动它

  • 您将应用程序置于后台,加载 Chrome,加载一些东西,然后 Android 决定您的应用程序应该灭亡并杀死它 (process com.example.acme.helloworld has died.)并且应用程序本身与每个静态变量一起被谋杀,并且您的应用程序是从头开始重新创建的,但是您的活动从 Activity 堆栈和 onSaveInstanceState -bundle

  • 加载

考虑到推送通知接收器服务很可能在不同的进程中,我认为它也可以从头开始启动您的应用程序实例。