安卓监听重复问题

开始

首先最开始的写法,在 onCreate 方法中创建了一个广播并注册。但是每次activity创建的时候都会注册一个新的广播?

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //创建广播实例
        BroadcastReceiver payBroadcastReceiver = new BroadcastReceiver() {
           @Override
           public void onReceive(Context context, Intent intent) {
           	   //广播执行回调,自定义
               Bundle payParams = intent.getExtras().getBundle("DATA");
               UnifyPay.getUnifyPay(MyCordovaActivity.this).pay(payParams);
           }
        };
        //注册广播
        LocalBroadcastManager.getInstance(this).registerReceiver(payBroadcastReceiver,new IntentFilter("broadcastName"));
    }
解决

上面情况就出现了每次send广播时回调方法会触发两次,比如这里使用的是付款的接口,会执行两次付款这指定是不行的。
最后将广播实例生命成一个静态变量,每次注册广播前判断是否为null,以此避免重复监听的问题。

static BroadcastReceiver payBroadcastReceiver;

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //判断广播实例是否为空
        if(payBroadcastReceiver !=null){
			//创建广播实例
	        payBroadcastReceiver = new BroadcastReceiver() {
	           @Override
	           public void onReceive(Context context, Intent intent) {
	           	   //广播执行回调,自定义
	               Bundle payParams = intent.getExtras().getBundle("DATA");
	               UnifyPay.getUnifyPay(MyCordovaActivity.this).pay(payParams);
	           }
	        };
	        //注册广播
	        LocalBroadcastManager.getInstance(this).registerReceiver(payBroadcastReceiver,new IntentFilter("broadcastName"));
		}
       
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值