【发布时间】:2015-11-15 21:13:20
【问题描述】:
假设我有一个Activity。在其onCreate 生命周期回调中,我通过将其实现为匿名类来创建一个BroadcastReceiver 对象,并将一些代码放入它的onReceive 回调中,该回调需要Activity 的Context 来显示Toast 消息被调用。在Activity 的onResume 回调中我注册了BroadcastReceiver 并在onPause 中取消注册它,因为它包含需要Activity 的Context 的代码,如果Activity 可能不可用正在经历破坏过程,即方向改变。这意味着,如果某事,即IntentService 在未注册的情况下为该BroadcastReceiver 广播Intent(无论多短,但它仍然可能发生),Intent 将永远不会被传递并且处理它的适当操作永远不会发生。所以用户可能会错过一些重要信息(通知成功注册的消息,警告出现问题等)我是对的吗?真的会发生这种情况吗?如何预防?无论应用程序的某些部分何时触发BroadcastReceiver,如何确保它能够接收到广播?
【问题讨论】:
-
在这种情况下不要使用
BroadcastReceiver,而是使用“绑定服务”模式 -
我完全忘记了这样的事情。已经有一段时间没有为 Android 开发了 :(。我会考虑使用绑定服务的解决方案,但我仍然希望获得一些更简单的解决方案建议。
标签: android android-intent android-activity broadcastreceiver intentservice