android - 在 Activity 的生命周期变化期间接收广播

标签 android android-intent android-activity broadcastreceiver intentservice

假设我有一个Activity。在其 onCreate 生命周期回调中,我创建了一个 BroadcastReceiver 对象,方法是将其实现为匿名类,并将一些代码放入其 onReceive 回调中,该回调需要 ActivityContext 在被调用时显示 Toast 消息。在 ActivityonResume 回调中,我注册了 BroadcastReceiver,在 onPause 中,我注销了它,因为它包含的代码需要 ActivityContext,如果 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/

相关文章:

java - 重新启动后无法访问另一个类中的 SharedPreferences 值

android - 我们如何从 Android 中的 Google Places API 获取附近的地点?

c# - 使用 Xamarin 显示 Android ProgressBar

android - 如何克服这个错误 android.permission.MODIFY_PHONE_STATE.?

android - 执行 ACTION_IMAGE_CAPTURE Intent 的可靠方法?

android - 如何使用左下角的应用程序图标在 sdcard 上创建文件夹?

android - 在动态变量上设置 url 路径

java - 将 ArrayList 从 SecondActivity 传递到 MainActivity Android

android如何从listview header中获取元素

android - 如何在 Android 中自动向上滚动 Recycler View ?