如何在android中检查广播注销与否?

how to check broadcast unregister or not in android?

在我的 activity 中,我尝试注销 Broadcast Receiver。我只是将这一行用于取消注册。

unregisterReceiver(myBroadcastReceiver);

但问题是我的 Broadcast 在两个条件下注销

1) 如果我在 onActvityResult

中得到结果

2) onDestroy

但问题是,当我的 Broadcast ReceiveronActvityResult 注销并且用户尝试关闭 Activity 时,我的 onDestroy 被调用并且我的应用程序崩溃了。

My Logcat:

Caused by: java.lang.IllegalArgumentException: Receiver not registered: com.coincide.ridetog.post_ride.PostRideActvity$MyBroadcastReceiver@831c755 at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:782) at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1205) at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:586) at com.coincide.ridetog.post_ride.PostRideActvity.onDestroy(PostRideActvity.java:300)

这是我的onDestroy()

@Override
protected void onDestroy() {
    super.onDestroy();
    if (myBroadcastReceiver!=null) {
        unregisterReceiver(myBroadcastReceiver);
    }
}

在您的 activity 中添加以下方法,并在您的 onResume 和 onActivityResult 回调中调用它。一旦方法被调用,它会将您的 myBroadcastReceiver 实例设置为 null,因此它将避免执行多次,直到您创建一个新的 myBroadcastReceiver 实例。

private void unregisterMyBroadcastReceiver() {
    if (null != myBroadcastReceiver) {
        unregisterReceiver(myBroadcastReceiver);
        myBroadcastReceiver = null;
    }
}