前言
Broadcast是Android四大组件之一,方便Android系统全局的消息通知。今天就简单的记录一下引入广播的优点以及广播使用相关的内容。
本文大部分内容摘抄的,记录于此只是方便自己查阅。
正文
好处
方便组件之间信息和数据传递
比如Activity,Service之间可以通过广播进行信息和数据的传递
方便程序间互通消息
比如应用通过观察者模式监听设备来电,关机,关屏进行相关操作
分类
普通广播
普通广播是一种完全异步执行的广播。
广播发送后,所有的广播接收器几乎在同一时刻接受到广播消息,且该广播无法被拦截继续传播。
使用
Intent intent=new Intent("com.biuamll.ACTION.NORMAL_BROADCAST"); //设置包名表示指定应用接收 //intent.setPackage("com.biuamll.demo"); sendBroadcast(intent);
有序广播
有序广播是一种同步执行的广播。
广播发送后,同一时刻只有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。
广播接受器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
可以通过abortBroadcast()进行终止广播继续发送。
使用
Intent intent=new Intent("com.biuamll.ACTION.ORDER_BROADCAST"); //设置包名表示指定应用接收 //intent.setPackage("com.biuamll.demo"); sendOrderedBroadcast(intent,null);
注册
广播的注册分两种,静态注册广播和动态注册广播。
静态注册
常驻类型的广播。
即使应用程序关闭后或没启动,如果有广播来,程序也会被系统拉起并处理广播。
优点:不受应用生命周期的影响,常驻
缺点:常驻会耗费cpu、电量等资源
动态注册
不常驻,广播会跟随程序的生命周期,需要用户手动注册和注销。
在Android的广播机制中,动态注册优先级高于静态注册优先级。
优点:动态注册的优先级高于静态注册的优先级,取消注册后,不再占用资源
缺点:程序退出,注销广播后,便无法进行广播监听
参考文章
《》
《
© 版权声明