BroadcastReceiver 有序广播

BroadcastReceive是一种全局监听器,实现BroadcastReceive需要BroadcastReceive的onReceive()方法。

实现过BroadcastReceive之后,是注册监听器,有两种方式

1.代码注册

IntentFilter intent=new IntentFilter("XXX ");

BroadcastReceive1  cast1=new BroadcastReceive1();

registerReceiver(cast1,intent);

2.xml注册

<receiver android:name="MyReceive2">
               <intent-filter android:priority="0">
                   <action android:name="com.example.action.ORDERBROADCAST" />
               </intent-filter>
           </receiver>

不要在BroadcastReceive中写一些耗时的操作,如果onReceive()方法在10秒未完成则会抛错ANR

如果非要写耗时操作,可以在BroadcastReceive中让intent打开一个service来完成,不考虑使用新线程去完成这个耗时的操作,因为BroadcastReceive本身生命周期很短,BroadcastReceive所在进程结束了,可是那个新线程没结束就可能在内存紧张时,系统把那没人要的新线程给杀死。



广播分为两类:普通广播  有序广播

对于有序广播,activity自从开启广播,该广播会按照优先级一个个传下去,如果被高优先级的方法给终止了,比它优先级低的将都收不到该广播了,activity可以将自己的需要传递的数据通过intent给传给各个广播监听者,而广播监听者BroadcastReceive则可以将需要传递的数据放到Bundle中去,通过setResultExtras(Bundle),然后后续的较低级广播监听者们通过getResultExtras(true)得到数据Bundle();

==注意的是:Activity只能通过intent,不能通过Bundle  。而BroadcastReceive只能通过Bundle 不同通过intent  来传递数据,否则得到的数据为nul。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值