Android四大组件之Broadcast

Android四大组件之Broadcast

我们都希望在开发中一些状态的变化会通知我们,让我们可以做出相应的变化.尤其是系统的状态变化,如电量低,锁屏,短信等.我们想等这些状态变化的时候做出一些反应,这时广播机制就能派上用处了.


Broadcast既然是Android四大组件之一,也说明Broadcast的重要性.用途也很大.

Broadcast分为两种不同类型.
  • 普通广播

    普通广播是完全异步的可以在同一时刻被所有的广播接收者接收到,消息传递的效率比较快,但缺点是接收者不能将处理结果传递给下一个接收者,(一般来说发普通广播的是系统的广播,不是我们定义的,也就是常用的 电量低.开机.等广播)无法终止该类广播;

  • 有序广播

    有序广播是广播在AndroidManifest.xml注册时其receiver时
    标签时指定其优先级的,其取值范围在-1000到1000.但是其值被些流氓的人设置成
    int的最大值也是可以的而且其优先级是最高的,那些流氓的人就不说了.

发送广播的方法
  • 普通广播

    Context.sendBroadcast() 所有的接收者都可收到广播

  • 有序广播

    Context.sendOrderedBroadcast() 发送的是有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者,前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。对于有序广播,前面的接收者可以将处理结果存放进广播Intent,然后传给下一个接收者。

广播的接收

有发送就会有接收 BroadcastReceiver 是广播机制的重要组成.

BroadcastReceiver的两种注册方式
  • BroadcastReceiver的实现

    我们在写BroadcastReceiver时只需继承自BroadcastReceiver实现onReceive(Context context,IntentIntent);方法就行,在onReceive实现自己的逻辑.

  • 常驻型广播

    只需要把我们的BroadcastReceiver在Androidmanifest文件中注册就行.

  • 动态广播

    Context.registerReceiver(@Nullable BroadcastReceiver receiver, IntentFilter filter)
    在你需要注册的地方调用registerReceiver即可注册广播.
    同时在Activity的onDestroy调用Context.unRegisterReceiver进行解注册.

使用注意与建议

广播(Broadcast)是在组件之间传播数据(Intent)的一种机制;这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用;有一定的解耦作用.也可以用它来实现当工作线程完成后,用它来更新数据,也可以用它来进行数据的下载,在使用动态广播时注意解注册.

博客链接

https://my.oschina.net/u/1175007/blog/485306
http://blog.csdn.net/luoshengyang/article/details/6730748
http://www.open-open.com/lib/view/open1380371837182.html
http://www.itnose.net/detail/6030479.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值