LocalBroadcast详解及源码分析
Broadcast作为Android的四大基础组件之一,重要作用不言而喻。常用的广播也有好几种:普通广播,有序广播,粘性广播,本地广播。今天说的便是最后一个。
首先,广播的注册与注销过程:
我们还需要一个发送方和接受者:
本地广播主要和两个类(LocalBroadManager与BroadcastReceiver)有关,从源码中看注册过程就是一个HashMap的创建过程,key为我们创建的BroadcastReceiver对象,value为一个ArrayList的Intentfilter对象,所以在合适的时机需要解注册即清除此HashMap以释放内存。
本地广播的发送需通过LocalBroadManager的sendBroadcast方法,传递一个Intent对象
在sendBroadcast方法中的工作就是通过匹配Intentfilter,让Intent在注册的Hashmap中找出所有符合的BroadcastReceiver对象,就来到了LocalBroadManager的executePendingBroadcast方法,其中的主要过程:
这样就来到了BroadcastReceiver对象的onReceive方法,因为其在主线程中运行,所以也不能执行耗时工作(10 S)。
总结一下,本地广播的主要流程都是在LocalManager类,实现了在本地进程中的传递信息。