android BroadcastReceiver 调用了两次

标签 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"));

问题是当我关闭 Activity 时,runOnUiThread 中的代码调用了不止一次

如果我关闭 Activity 并打开它,它会调用 2 次,如果我再次打开它,它会调用 3 次,依此类推

最佳答案

您需要在 Activity 暂停后注销广播接收器。在您的 Activity 的 onPause() 方法中。 LocalBroadcastManager.getInstance(this).unregisterReceiver(m‌ MessageReceiver)

关于android BroadcastReceiver 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47102584/

相关文章:

Android keystore UserNotAuthenticatedException 无限循环

android - WAKE_LOCK 将不起作用

android - Android UI 模型的大小?

Android Canvas 以30fps重绘

android - Samsung Galaxy S3 上的 TTS 问题

java - 为了捕获 BOOT_COMPLETED,只需在 `AndroidManifest.xml` 中注册 BroadcastReceiver 就足够了吗?

android - 如果 onStop() 不会被调用,我在哪里可以注销我的 Broadcastreceiver?

android - 发送广播 UDP 但在其他 Android 设备上不接收

webrtc - 使用 Kurento 广播 RTP 流