Android习题第7章广播
本章习题
一、填空题
- ________用来监听来自系统或者应用程序的广播。
- 广播接收者的注册方式有两种,分别是________和________。
二、判断题
- Broadcast表示广播,它是一种运用在应用程序之间传递消息的机制。( )
- 在清单文件注册广播接收者时,可在<intent-filter>标签中使用priority属性设置优先级别,属性值越大优先级越高。( )
- 有序广播的广播效率比无序广播更高。( )
- 动态注册的广播接收者的生命周期依赖于注册广播的组件。( )
- Android中广播接收者必须在清单文件里面注册。( )
三、选择题
- 下列选项中,关于广播类型的说法,错误的是( )(多选)
A、Android中的广播类型分有序广播和无序广播
B、无序广播是按照一定的优先级进行接收
C、无序广播可以被拦截,可以被修改数据
D、有序广播按照一定的优先级进行发送
- 广播机制作为Android组件间的通信方式,使用的场景有哪些( )(多选)
A、在同一个APP内部的同一组件内进行消息通信
B、不同APP的组件之间进行消息通信
C、在同一个APP内部的不同组件之间进行消息通信(单个进程)
D、在同一个APP具有多个进程的不同组件之间进行消息通信
四、简答题。
- 简述广播机制的实现过程。
- 简述有序广播和无序广播的区别。
五、编程题
编写一个程序,实现无序广播的发送和接收。
一、填空题
1、BroadcastReceiver
2、 动态注册 静态注册
二、判断题
1、对 2、对 3、错 4、对 5、错
三、选择题
A、 BC 2、ABCD
四、简答题
1. 广播机制的实现过程
答:Android中的广播使用了观察者模式,即基于消息的发布/订阅事件的模式。广播发送者和接收者分别处于观察者模式中的消息发布和订阅两端。广播机制的实现过程具体如下:
1. 广播接收者通过Binder机制在AMS(Activity Manager Service)中进行注册。
2. 广播发送者通过Binder机制向AMS发送广播。
3. AMS查找符合相应条件(IntentFilter/Permission)的广播接收者,将广播发送到相应的消息循环队列中。
4. 执行消息循环时获取到发送的广播,然后回调广播接收者中的onReceive()方法并在该方法中进行相关处理。
2. 简述有序广播和无序广播的区别
答:广播分为有序广播和无序广播,他们有以下几点的区别。
(1) 发送广播时,使用的方法不同。有序广播使用sendOrderedBroadcast()发送广播,而无序广播使用sendBroadcast()方法发送广播。
(2) 广播接收者执行的顺序
- 有序广播的接收者是顺序执行的。
有序广播按照广播接收者声明的优先级别被依次接收。当在高级别的广播接收者逻辑执行完毕之后,广播才会继续传递。当优先级相同时,先注册的广播接受者优先执行。
- 无序广播是完全异步执行的。
当发送无序广播时,所有监听这个广播的广播接收者都会接收到此广播消息,但接收和执行的顺序不确定。
(3)拦截广播
有序广播的接收者可拦截广播。如果优先级较高的广播接收者将广播终止,那么广播将不再向后传递。而无序广播则不能被拦截。
(4)效率
有序广播的效率比无序广播低。