任务结束后,我正在使用JobIntentService
执行某些任务,我发送的广播也被我的一个活动收听。
假设在Android OS关闭活动以释放一些内存的情况下,如果从JobIntentService
发送广播,还会调用应用程序的OnCreate
吗?
答案 0 :(得分:2)
否。它永远不会调用应用程序的OnCreate()方法(仅在冷启动期间调用)。
冷启动是指应用程序从头开始:系统进程直到此启动才创建应用程序的进程。在某些情况下,例如自设备启动以来首次启动应用程序或系统终止了该应用程序之类的情况下,就会出现冷启动。
关于BroadcastReceiver生命周期:
如果接收者已在活动中注册,则其生命周期就是活动生命周期。因此,一旦您的活动遭到破坏,您的接收器将无法收听。
如果接收者已在应用程序中注册,则其生命周期将是应用程序生命周期,并且只要应用程序未被销毁,它就能收听广播。
JobIntentService&Receiver
(从接收方)启动JobIntentServie时,只要正在进行的作业正在进行,作业意图服务就不会被操作系统杀死(请注意,可能会有时间限制,以了解更多信息:{ {3}}。
现在,如果在此期间您的活动被破坏,那么广播接收器将不会收听广播,因为广播的生命周期已经结束,如果您自己未注销接收器,则系统会杀死它,因为系统认为BroadcastReceiver是不再活动。
因此,如果您想在不破坏应用程序的情况下收听广播,则应在应用程序的 onCreate()方法中注册广播接收器。
答案 1 :(得分:1)
我不知道标记为正确的答案是否仍然正确。在运行Android P的电话上,如果您有清单声明的广播接收器,并且在<application>
节点中定义了Application类,则将在广播接收器中的onReceive之前调用Application类中的onCreate()
。我认为没有理由相信其他版本的Android会有不同的表现。