Android 同一个BroadcastReceiver在两个程序里执行

在项目中,需要将同一段程序变为两个app,并且可以安装在同一个手机里,一般而言两个相同的程序安装在手机里,会被互相替代,但是我们改一下gradle文件中的applicationId(如图所示),使两个程序该值不同即可同时安装在手机里。

在程序中,有socket心跳连接服务,在心跳连接断开时会发送广播提醒,从而弹框提醒用户连接已断开。经改动Id后的两个app,在测试时发现,弹框总会弹出两次,这种情况只有在两个app同时在手机中运行时才会出现(一个在前台运行,一个在后台),在打出Log后发现,原因在于广播发送了两次,由于两个app是由同一代码执行生成的,因此广播的配置相同,如下段代码即为广播配置:

private void registerReceiver() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(BackService.HEART_BEAT_ACTION);
        intentFilter.addAction(BackService.MESSAGE_ACTION);
        getApplicationContext().registerReceiver(mReceiver, intentFilter);
    }
两个app同时在手机中运行时,执行一次发送广播的代码,就会同时触发两个程序的广播,由于一个在后台,程序的执行就会结果就会全部体现在前台的程序里面,导致弹框出现两次,解决方法为把其中一个广播的配置改动,使两个程序的广播配置不同即可,经测后发现该问题已经消失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值