簡體   English   中英

如何檢查廣​​播注銷或不在android中?

[英]how to check broadcast unregister or not in android?

在我的活動中,我嘗試注銷Broadcast Receiver注冊。 我只是將這一行用於注銷。

unregisterReceiver(myBroadcastReceiver);

但是問題是我的Broadcast在兩種情況下都未注冊

1)如果我在onActvityResult得到結果

2)在onDestroy

但是問題是,當我的Broadcast ReceiveronActvityResult注銷時,並且當用戶嘗試關閉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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM