假设我有一个Activity
。在其 onCreate
生命周期回调中,我创建了一个 BroadcastReceiver
对象,方法是将其实现为匿名类,并将一些代码放入其 onReceive
回调中,该回调需要 Activity
的 Context
在被调用时显示 Toast
消息。在 Activity
的 onResume
回调中,我注册了 BroadcastReceiver
,在 onPause
中,我注销了它,因为它包含的代码需要 Activity
的 Context
,如果 Activity
正在经历破坏过程,即方向改变,它可能不可用。这意味着如果某些东西,即 IntentService
在未注册时为 BroadcastReceiver
广播了一个 Intent
(无论多短,但它仍然会发生) ,Intent
将永远不会被传递,处理它的适当操作也永远不会发生。所以用户可能会错过一些重要信息(通知注册成功的消息,警告出现问题等)我说得对吗?这种情况是否真的会发生?如何预防?如何确保无论应用程序的某个部分何时触发 BroadcastReceiver
都会接收到广播?
最佳答案
创建 MyBroadcastReceiver
扩展 BroadcastReceiver
(当然 :D)并使用适当的 Intent 过滤器操作在 list 中注册它。然后在 onReceive()
中,您将可以访问 Application's Context
。请记住,即使您的应用已关闭,onReceive()
也会被触发(例如,如果您的操作是 Intent.ACTION_SCREEN_OFF
)。
这取决于您要在该接收器中执行的操作...还可以查看 EventBus https://github.com/greenrobot/EventBus如果您必须在您的应用中发送事件。
关于android - 在 Activity 的生命周期变化期间接收广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33725120/