Android中的广播主要可以分为两种类型:标准广播和有序广播。
标准广播
一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时间接收到这条广播,因此他们之间没有任何的先后顺序。
特点:效率高;缺点:无法拦截。
有序广播
一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播,当该广播接收器执行完OnReceive()方法逻辑后,广播才会继续传递。
特点:优先级高者会先接收到广播,并且可以拦截该条广播是否继续传递。
注意点
有些广播可以通过动态(java代码)静态(xml文件)方式任一种来注册;
有些广播则必须通过某一种方式来注册,比如开机广播必须通过xml方式来注册,监听手机屏幕解锁开锁则必须通过java代码来注册。
本地广播
LocalBroadcastManager 相信有不少人会有点认生,他是android.support.v4中的一个类,本地广播,只在App内部传播,大家熟知的广播,BrocastReceiver是全局广播,可以跨进程通信,而LocalBroadcastManager,只是作为一个本地消息和数据传输的手段,当然,还是有不少人再用EventBus这类的消息事件库,不过我不喜欢用第三方的库,虽然EventBus也比较小,之前一直在使用BrocastReceiver,也比较随意,后来接触的项目多了,很多事情就需要考虑到了。
本地广播的优势
只能传输在App内部,不会被其他App接收,确保数据安全
接收不到其他App广播,免干扰
比BrocastReceiver更加高效
不过要注意的是,LocalBroadcastManager不能静态注册,只能动态注册,这一特性也反应了第二点,不需要接收其他App的广播
Android广播
最新推荐文章于 2023-10-29 14:32:05 发布