1、广播的种类:
普通广播、有序广播、粘性广播、本地广播
2、广播的注册方式:
静态注册、和动态注册
静态的注册是在应用安装的时候由系统自动完成注册,与其他三大组件一样都是由系统在安装时,由PMS(PackageManagerService)来完成整个注册的过程
动态注册是由ContextWrapper的registerReceiver方法开始的,具体的实现是由ContextImpl来完成的
3、内部实现机制
通过Binder机制向AMS(Activity Manager Service}进行注册
广播发送者通过Binder机制向AMS发送广播
AMS查找符合响应条件的(IntentFilter/Permission)的BroadcastReceiver,然后将广播发送到BroadcastReceiver(一般情况下是Activity)响应的消息循环队列中
消息循环执行拿到此广播 ,回调BroadcastReceiver中的onReceiver
LocalBroadcastManager高效的原因是 因为它的内部是通过Handler实现的,他的sendBroadcast方法的含义是通过handler发送一个Message实现的
他的register其实是在向一个集合添加接口,当有其他的地方调用的时候 直接从集合中找到对应的实现接口的对象 然后通过handler发送消息 调用回调函数
因为是通过handler来实现广播的发送,相比于Binder那可定是更加高效了,通过也保证了我们应用内的广播发送