Android应用程序onCreate,何时调用

时间:2015-10-16 17:31:38

标签: android android-service android-lifecycle application-lifecycle

我仍然无法了解Application(非活动)生命周期的方式,

启动GUI时,调用Application的onCreate方法非常简单。

但是,它是在以下任何一种情况下开始的吗?

  • App Widget可见
  • 广播接收器收到的东西
  • 推送通知到达设备并显示消息
  • 应用关闭后点击推送通知
  • 服务已启动

申请流程能保持多久?

现在我遇到一个问题,我发现应用程序(进程)在关闭/终止应用程序后重新启动。但是,没有任何实现可以解决此问题。

2 个答案:

答案 0 :(得分:7)

  

但是,它是在以下任何一种情况下开始的吗?

您的Application实例是在启动流程时创建的。

  

App Widget可见

简单可见与您的应用及其流程无关。您的应用及其流程将参与填充应用小部件,创建时以及何时更新。例如,如果updatePeriodMillis正在触发更新,并且当时间到来时,您没有进程,则在{{{}之前创建Application实例作为启动进程的一部分。使用AppWidgetProvider调用1}}。

  

广播接收器收到的东西

如果您的流程已存在,则您的onUpdate()实例已存在。如果您的流程不存在,那么在使用Application调用Application之前,会在启动流程时创建BroadcastReceiver实例。

  

推送通知到达设备并显示消息

如果你的意思是GCM,因为这是一个广播,见上文。

  

应用关闭后点击推送通知

我不知道你的意思。

  

服务已启动

如果您的代码正在启动该服务,那么您的流程已在运行,并且您已经拥有onReceive()。如果某个其他流程正在启动您的服务,并且您的流程未运行,则会在Application之前创建Application,作为创建流程的一部分。

  

申请流程能保持多久?

如果通过“申请流程”,您的意思是“流程”,那么您的流程将会介于一个毫秒到一千年之间。它会一直存在,直到Android终止它以释放其他应用程序的系统RAM,或直到某些东西专门摆脱它(例如,“任务杀手”,强制停止在设置中)。

答案 1 :(得分:3)

应用程序onCreate()在应用程序停止时调用,并且已启动。

例如:

  • 你的应用程序在没有运行时启动(第一次在会话中运行它或者在强制停止后启动它)

  • 您长时间退出所有活动(它不会立即被杀死!)并且Android决定关闭您的应用并重新启动它

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

  • 加载的

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