[英]how to check broadcast unregister or not in android?
在我的活動中,我嘗試注銷Broadcast Receiver
注冊。 我只是將這一行用於注銷。
unregisterReceiver(myBroadcastReceiver);
但是問題是我的Broadcast
在兩種情況下都未注冊
1)如果我在onActvityResult
得到結果
2)在onDestroy
但是問題是,當我的Broadcast Receiver
從onActvityResult
注銷時,並且當用戶嘗試關閉Activity
我的onDestroy
被調用,我的應用程序崩潰了。
我的Logcat:
造成原因:java.lang.IllegalArgumentException:接收者未注冊:com.coincide.ridetog.post_ride.PostRideActvity$MyBroadcastReceiver@831c755在android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:782)在android.app.ContextImpl.unregisterReceive ContextImpl.java:1205)位於android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:586)位於com.coincide.ridetog.post_ride.PostRideActvity.onDestroy(PostRideActvity.java:300)
這是我的onDestroy()
@Override
protected void onDestroy() {
super.onDestroy();
if (myBroadcastReceiver!=null) {
unregisterReceiver(myBroadcastReceiver);
}
}
在您的活動中添加以下方法,並在您的onResume和onActivityResult回調中調用它。 調用方法后,它將myBroadcastReceiver實例設置為null,因此它將避免執行多次,直到創建新的myBroadcastReceiver實例為止。
private void unregisterMyBroadcastReceiver() {
if (null != myBroadcastReceiver) {
unregisterReceiver(myBroadcastReceiver);
myBroadcastReceiver = null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.