LocalBroadcast详解及源码分析

来源:互联网 发布:linux用cp复制文件 编辑:程序博客网 时间:2024/06/05 16:53

LocalBroadcast详解及源码分析

     Broadcast作为Android的四大基础组件之一,重要作用不言而喻。常用的广播也有好几种:普通广播,有序广播,粘性广播,本地广播。今天说的便是最后一个。

     首先,广播的注册与注销过程:

     123

    我们还需要一个发送方和接受者:

   456

    890

  890

  本地广播主要和两个类(LocalBroadManagerBroadcastReceiver)有关,从源码中看注册过程就是一个HashMap的创建过程,key我们创建的BroadcastReceiver对象,value为一个ArrayListIntentfilter对象,所以在合适的时机需要解注册即清除此HashMap以释放内存。

  本地广播的发送需通过LocalBroadManagersendBroadcast方法,传递一个Intent对象 

    345 456

  在sendBroadcast方法中的工作就是通过匹配Intentfilter,让Intent在注册的Hashmap中找出所有符合的BroadcastReceiver对象,就来到了LocalBroadManagerexecutePendingBroadcast方法,其中的主要过程:

  345

  这样就来到了BroadcastReceiver对象的onReceive方法,因为其在主线程中运行,所以也不能执行耗时工作(10 S)

  总结一下,本地广播的主要流程都是在LocalManager类,实现了在本地进程中的传递信息。

 

 

0 0
原创粉丝点击