android-基础知识-Broadcast
概述
主要写 1.广播的分类 2.广播的优缺点 3.广播的实现原理
广播的分类
1.有序广播 无序广播2.静态广播 动态广播 3.本地广播 4.系统广播 5.粘性广播(Sticky Broadcast:粘性广播(在 android 5.0/api 21中deprecated,不再推荐使用,相应的还有粘性有序广播,同样已经deprecated)。)
1.有序广播、无序广播
1.1 无序广播(标准广播)
无序广播又叫标准广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播的信息,因此他们之间没有任何的先后顺序可言
sendBroadcast(intentBro, "receiverPermission");
其中"receiverPermission" 参数为非必要。
1.2. 有序广播:
有序广播接收器是有先后顺序的,而且前面的广播可以对后续的广播进行截断,以阻止让其继续广播。权限高者会先获取得到广播的信息
sendOrderedBroadcast(intentBro, "receiverPermission");
其中"receiverPermission" 参数为必要。
问题1:为啥两种方式receiverPermission一个可以无一个必须有呢?
回答1:
- 先说“receiverPermission”参数是干啥的。它是“没有相同权限的其他进程不可以接收到,本进程内不受影响没有此权限的也可以接受到”,当避免其他进程接收的时候可以用它。
- 因为有序广播存在高优先级priority拦截低priority的问题,跨进程风险很大,故必须传receiverPermission加以限制。
问题2:广播跨进程风险怎么规避
回答2:
- exported=false
此broadcastReceiver能否接收其他App的发出的广播,这个属性默认值有点意思,其默认值是由receiver中有无intent-filter决定的,如果有intent-filter,默认值为true,否则为false。(同