我仍然无法了解Application
(非活动)生命周期的方式,
启动GUI时,调用Application的onCreate方法非常简单。
但是,它是在以下任何一种情况下开始的吗?
申请流程能保持多久?
现在我遇到一个问题,我发现应用程序(进程)在关闭/终止应用程序后重新启动。但是,没有任何实现可以解决此问题。
答案 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
考虑到推送通知接收器服务很可能在不同的进程中,我认为也可以从头开始启动应用程序实例。