在强制终止然后重新启动后,BroadcastReceiver不会收到任何内容

时间:2014-01-22 23:32:51

标签: android

我有一个BroadcastReceiver,我在我的服务的onCreate方法中动态注册。它首先收到行动正常,但如果应用程序被强制杀死然后重新启动它就不会收到任何内容。

我强行杀人的原因是我想从一个完全没有启动的状态测试我的应用程序,即使我从Eclipse“停止进程”,似乎还有一部分仍在运行。此外,我觉得它应该能够处理用户的强制停止,对吗?

BroadcastReceiver已注册:

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
registerReceiver(btReceiver, filter);

谢谢!

1 个答案:

答案 0 :(得分:4)

  

我有一个BroadcastReceiver,我在onCreate方法中为我的服务动态注册。它首先收到行动正常,但如果应用程序被强制杀死然后重新启动它就不会收到任何内容。

我假设“强制杀死”意味着您进入设置并按下“强制停止”按钮。如果是这样,原因有很多。

从战术上讲,如果您通过BroadcastReceiver注册registerReceiver(),则只有在相应的unregisterReceiver()来电之前才能使用Intent,或者如果您泄漏接收方,您的流程将被终止。

即使你将接收器移动到清单中注册,如果你强行停止你的应用程序,那么接收者将不再接收任何广播,直到用户运行你的活动(或者其他东西通过显式触发你的代码{ {1}})。

  

我强行杀人的原因是我想从一个完全没有启动的状态测试我的应用程序,即使我从Eclipse“停止进程”,似乎还有一部分仍在运行

使用DDMS终止流程时,您的流程不再运行。