Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么当应用程序被终止时AlarmManager广播会被取消?_Android_Broadcastreceiver_Alarmmanager - Fatal编程技术网

Android 为什么当应用程序被终止时AlarmManager广播会被取消?

Android 为什么当应用程序被终止时AlarmManager广播会被取消?,android,broadcastreceiver,alarmmanager,Android,Broadcastreceiver,Alarmmanager,好的,我注册了两个广播接收机。当应用程序关闭时,它们都会在适当的时间启动并执行适当的操作 如果应用程序被关闭,然后被杀死(比如使用AppKiller),那么接收者永远不会收到他们的广播,并且什么也不会发生 如果父应用程序由于内存不足而被终止,可能会发生同样的情况,那么我如何确保这些广播被触发/接收呢。API声明,即使应用程序被杀死,它也应该启动,其他人是否有这种情况的经验 如果有帮助,我的清单是: <!-- receivers for AlarmManager --> <re

好的,我注册了两个广播接收机。当应用程序关闭时,它们都会在适当的时间启动并执行适当的操作

如果应用程序被关闭,然后被杀死(比如使用AppKiller),那么接收者永远不会收到他们的广播,并且什么也不会发生

如果父应用程序由于内存不足而被终止,可能会发生同样的情况,那么我如何确保这些广播被触发/接收呢。API声明,即使应用程序被杀死,它也应该启动,其他人是否有这种情况的经验

如果有帮助,我的清单是:

<!-- receivers for AlarmManager --> 
<receiver 
android:exported="true" 
android:label="Shift roster updating calendar." 
android:name="com.skooter.shiftroster.backend.service.UpdateCalendar" 
> 
</receiver> 
<receiver 
android:exported="true" 
android:label="Shift roster checking alarm." 
android:name="com.skooter.shiftroster.backend.service.SetWakeup" 
> 
</receiver> 

AlarmManager/BroadcastReceivers中没有发生任何神秘的事情

假设同样的事情发生在 父应用程序由于低可用性而被终止 记忆

你想错了。所谓的“任务杀手”是利用一种特定的API,一种在内存不足的情况下不使用的API。“任务杀手”API对一切都进行了核爆,包括定时警报


此外,您的父应用程序可能一开始就不在内存中。使用
AlarmManager
的全部意义在于,您的“父应用程序”不会在不执行任何操作时占用内存。

谢谢。父应用程序置于后台,可由系统关闭;这就是应用程序的一个要点,就是让警报保持运行