当我杀死我的应用程序时,BroadcastReceiver无法正常工作

时间:2014-07-25 00:51:53

标签: android broadcastreceiver

我注意到,每当我通过长按手机的后退按钮手动杀死我的应用程序时,我的广播接收器就会停止工作。每次用户挂断电话时,接收方都负责显示通知,并且在manifest.xml中注册了该通知。

这是正常/预期的行为吗?我认为接收器应该继续工作,即使用户决定杀死我的应用程序......有没有办法防止这种情况?

感谢。

修改

这是接收者的清单条目:

<receiver android:name=".BroadcastReceivers.CallReceiver" android:enabled="true">
   <intent-filter>
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
       <action android:name="android.intent.action.PHONE_STATE" />
   </intent-filter>
</receiver>

2 个答案:

答案 0 :(得分:11)

这个星球上有大约70亿人。只有你知道你的意思&#34; kill&#34;。

但是,您所描述的症状与“强制停止”相符。用户通常会通过转到“设置”,在已安装的应用列表中找到您的应用,以及点击“强制停止”等强制停止应用程序。您的应用的按钮。有一些设备和固件版本可以强制停止&#34;强制停止&#34;比这更容易访问 - 这些设备和固件版本是由流口水的白痴恕我直言写的。

如果您的应用被强制停止,那么您的代码将永远不再运行,直到某些内容使用明确的Intent来启动您的某个组件。通常,用户通过点按主屏幕启动器中的应用程序图标来执行此操作。在用户执行此操作之前,您的BroadcastReceiver将无效,并且您无法对其进行任何操作。

而不是使用某些设备上的功能来杀死&#34;您的应用,尝试通过DDMS终止其过程。如果你的应用程序继续在这种情况下工作,那么你选择&#34; kill&#34;你的应用程序之前正在进行强制停止&#34;。仅仅因为内存不足而终止您的流程不应该阻止您接收未来的广播。

答案 1 :(得分:1)

我知道有些设备(比如我的ASUS)在你停止应用程序时会删除静态接收器,你的可能就是其中之一。 您唯一能做的就是尝试使用模拟器或其他设备。