美文网首页
Receiver not registered

Receiver not registered

作者: 雨来 | 来源:发表于2020-07-18 08:39 被阅读0次
    Receiver not registered

    这个错误产生的原因:是在我们销毁广播的时候会产生的这个错误:翻译后的意思是 广播接收者(这个接收者可以注册可以接收指定action的广播)未注册。

    产生的原因:

    1、

    销毁的广播真的没有注册(registerReceiver()) 我们就进行了 销毁:unregisterReceiver()

    2、

    我们注册了时的 receiver和销毁的receiver不是同一个对象 当然也会出现上面的问题。

    3、(下面的代码是贴的别人的就是这个意思)

    我们注册和销毁的是同一个广播接收者(BroadcastReceiver)也会出现上面的问题 这个时候我们的解决办法是 加一个标识 如 注册后 把一个boolean 值置为true 然后我们判断这个boolean 值如果为true的话再销毁广播接收者。

    private boolean mReceiverTag = false;   //广播接受者标识
    //代码中动态注册广播
    private void registerReceiver() {
            if (!mReceiverTag){     //在注册广播接受者的时候 判断是否已被注册,避免重复多次注册广播
                IntentFilter mFileter = new IntentFilter();
                mReceiverTag = true;    //标识值 赋值为 true 表示广播已被注册
                mFileter.addAction("com.android.scan.RECEIVED_CODE_FROM_NFC");
                this.registerReceiver(mReceiver, mFileter);
            }
    }
    //注销广播
    private void unregisterReceiver() {
            if (mReceiverTag) {   //判断广播是否注册
                    mReceiverTag = false;   //Tag值 赋值为false 表示该广播已被注销
                    this.unregisterReceiver(mReceiver);   //注销广播
            }
    
    }
    

    不明白为什么要加个标识才能注销广播 ,有知道的可以告诉我一下哈,我明明确确的 注册了广播再注销广播竟然会出现 Receiver not registered 错误......

    相关文章

      网友评论

          本文标题:Receiver not registered

          本文链接:https://www.haomeiwen.com/subject/kicxkktx.html