LocalBroadcast详解及源码分析

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类,实现了在本地进程中的传递信息。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值