广播是一种运用在组件之间传递消息的机制。如果要接收并过滤广播中的信息,则需要使用BroadcastRecciver(广播接收者)。
8.1广播机制的概述
Android中的广播机制更加灵活,因为Android中每个应用程序都可以根据自己的需要对广播进行注册,所以该程序只会接收自己关注的广播内容,这些广播可能是Android系统发送的,也可能是其他应用程序发送的。
Android中的广播机制用于进程或线程间通信。该机制使用了观察者模式。在该模式下,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时会主动发出遍知。
广播机制的实现流程:
①广播接收者是通过Binder机制在AMS(处理中心)中进行注册的。
②广播发送者是通过Binder机制向AMS发送广播。
③AMS查找到符合相应条件的广播接收者,会将广播发送到相应的消息循环队列中。
④程序执行消息循环时会获取到此广播,并会回调广播接收者中的onReceive()方法进行相关的处理。
8.2广播接收者
1,当Android系统产生一个广播事件时,可以有多个对应的BroadcastReceiver接收并进行处理,这些广播接收者只需要在清单文件或代码中进行注册并指定要接收收广播事件,然后创建一个继承了BroadcastReceiver的类,在该类中重写onReceive()方法,并在onReceive()方法中对广播事件进行处理。
2,创建广播接收者:
①第一种创建方式。继承BroadcastReceiver,重写onReceive()方法。
②第二种创建方式。选中BroadcastReceiver应用程序的包。
3,注册广播接收者:分为动态注册和静态注册。动态注册是在Activity中通过代码注册广播接收者,静态注册是在清单文件中通过配置广播接收者完成注册。动态注册的广播接收者是否被注销依赖于注册广播的组件。
8.3自定义广播与广播的类型
8.3.1自定义广播
当系统提供的广播不能满足实际需求时,可以自定义广播。代码:
Intent intent=new Intent();
intent.setAction(……);//定义广播的事件类型
sendBroadcast(intent);//发送自定义广播
广播的事件类型可以调用setAction()方法自己定义。
8.3.3广播的类型
①无序广播:完全异步执行的,发送广播时,所有监听这个广播的广播接收器都会接收到此广播消息,但接收和执行的顺序不确定。效率高,无法被拦截。
②有序广播:按照广播接收者声明的优先级别被依次接收,发送广播时,只会有一个广播接收者能够接收此消息,当在此广播接收者中逻辑执行完毕之后,广播才会继续传递。效率低,有先后顺序,可被拦截。
标签:接收,接收者,广播,注册,机制,移动,Android From: https://blog.csdn.net/2302_78218660/article/details/139836212