android BroadcastReceiver调用了两次

时间:2017-11-03 18:46:17

标签: android broadcastreceiver broadcast android-broadcastreceiver android-runonuithread

我正在研究聊天项目

我在这里做的是与连接人员一起服务,我设置广播接收器以从服务获取数据

这是接收者代码

mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            try {
                final String code = intent.getExtras().get("code").toString();
                final JSONObject Message = new JSONObject(intent.getExtras().get("msg").toString());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Log.d("test","test");
                    }
                });
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,new IntentFilter("data"));

问题是当我关闭活动时,runOnUiThread中的代码被多次调用

如果我关闭活动并打开它,它会调用2次,如果我再次执行它会调用3次等等

1 个答案:

答案 0 :(得分:1)

您的活动暂停后,您需要取消注册广播接收器。在您的活动的onPause()方法中。 LocalBroadcastManager.getInstance(本).unregisterReceiver(米的messageReceiver)