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 错误......
网友评论