如何在android中检查广播注销与否?
how to check broadcast unregister or not in android?
在我的 activity 中,我尝试注销 Broadcast Receiver
。我只是将这一行用于取消注册。
unregisterReceiver(myBroadcastReceiver);
但问题是我的 Broadcast
在两个条件下注销
1) 如果我在 onActvityResult
中得到结果
2) onDestroy
但问题是,当我的 Broadcast Receiver
从 onActvityResult
注销并且用户尝试关闭 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;
}
}
在我的 activity 中,我尝试注销 Broadcast Receiver
。我只是将这一行用于取消注册。
unregisterReceiver(myBroadcastReceiver);
但问题是我的 Broadcast
在两个条件下注销
1) 如果我在 onActvityResult
2) onDestroy
但问题是,当我的 Broadcast Receiver
从 onActvityResult
注销并且用户尝试关闭 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;
}
}