我在notification
方法中推送onMessageReceived()
后发送广播。
在BroadcastReceiver的onReceive()
方法中,我希望显示允许用户移动到另一个片段的AlertDialog
。
问题是我的onReceive()
方法被调用了3次,而不是1次而我的AlertDialog
被打开了3次。
我尝试过类似的事情:
private int onReceiveCalledIndex = 0;
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getExtras() != null)
{
String requestIdString = (String) intent.getExtras().get(Constants.PUSH_NOTIFICATION_CHAT_PUT_EXTRA);
Log.e("DEBUG_RECEIVE",String.valueOf(onReceiveCalledIndex));
onReceiveCalledIndex += 1;
if(onReceiveCalledIndex == 2 ) showNewMessageDialog(requestIdString);
}
}
但是我得到了这些日志,我的索引永远不会增加。就像这个方法同时在三个不同的线程上被调用一样...
E / DEBUG_RECEIVE:0
E / DEBUG_RECEIVE:0
E / DEBUG_RECEIVE:0
有人请告诉我一种方法,让onReceive()
只被调用一次或处理,所以我只打开一个对话框。
答案 0 :(得分:1)
动态注册和取消注册广播接收器
注册使用: -
END
取消注册: -
this.registerReceiver(broadCastReceiver, new IntentFilter(droid.intent.action.TIME_TICK'));
答案 1 :(得分:0)
如果你从活动中注册接收者而不是片段,那么接缝就会很好。
感谢您的帮助。