Android 广播「BroadcastReceiver」接收不到「Intent」的信息

BroadcastReceiver & Intent

我们在工作的过程中,经常会使用到 BroadcastReceiver 机制,用来向活动发送消息,更新服务内的数据信息。但是我在这一过

程中发生了一个低级错误,我向广播发送两种 Action 类型的 Intent,结果始终接收不到,或者只能接收到一个 Intent 信息

预测效果:

进度条

但是实际:

进度条满了之后无法关闭:


进过排查后我发现了问题所在:

在广播注册的地方,我只为 Receiver 添加了修改进度条的 Action ,而没有添加打开、关闭窗口的 Action:

    private fun iniBroadCast() {
        val manager = LocalBroadcastManager.getInstance(this)
        val broadcastReceiver = MyBroadcastReceiver(progressDialog)
        val intentFilter = IntentFilter()
        intentFilter.addAction(IntentManager.ACTION_TYPE_THREAD)
        manager.registerReceiver(broadcastReceiver, intentFilter)
        val intent = Intent(this, MyIntentService::class.java)
        startService(intent)
    }

可以看到 我只添加了 intentFilter.addAction(IntentManager.ACTION_TYPE_THREAD)

但是我在服务中,却是分两个 Action 发出的,如下 ⬇️

    private void sendIfoToBroadCast(String serviceStatus){
        Intent intent1 = new Intent(IntentManager.ACTION_TYPE_SERVICE);
        intent1.putExtra(IntentManager.INTENT_STATUS_SERVICE, serviceStatus);
        manager.sendBroadcast(intent1);
    }

    private void sendIfoToBroadCast(String serviceStatus, int progressStatus){
        Intent intent = new Intent(IntentManager.ACTION_TYPE_THREAD);
        intent.putExtra(IntentManager.INTENT_STATUS_SERVICE, serviceStatus);
        intent.putExtra(IntentManager.INTENT_PROGRESS_SERVICE, progressStatus);
        manager.sendBroadcast(intent);
    }

所以错误原因就是我在为 BroadcastReceiver 进行组册时,少添加了 Action


解决

没啥难度加上就是:

    private fun iniBroadCast() {
        val manager = LocalBroadcastManager.getInstance(this)
        val broadcastReceiver = MyBroadcastReceiver(progressDialog)
        val intentFilter = IntentFilter()
        intentFilter.addAction(IntentManager.ACTION_TYPE_SERVICE)
        intentFilter.addAction(IntentManager.ACTION_TYPE_THREAD)
        manager.registerReceiver(broadcastReceiver, intentFilter)
        val intent = Intent(this, MyIntentService::class.java)
        startService(intent)
    }

如上,完美解决! 测试 Demo 地址:点击前往 https://github.com/FishInWater-1999/android_four_major_components

如果也解决了你的问题,不妨给个赞呗,么么哒~~

猜你喜欢

转载自blog.csdn.net/qq_43377749/article/details/90738979