LocalBroadcastManager机制分析

本文深入分析了Android中的LocalBroadcastManager,它是支持应用程序内通信的工具,提供了安全高效的方式替代全局BroadcastReceiver。文章详细介绍了getInstance、registerReceiver、unregisterReceiver以及sendBroadcast等关键方法的实现,并阐述了其与普通BroadcastReceiver的区别和优势,强调了LocalBroadcastManager仅适用于进程内通信且具备安全性和高效性特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。BroadcastReceiver设计的

初衷是从全局考虑可以方便应用程序和系统、应用程序之间、应用程序内的通信。但是有时候只是给进程

内部发送广播也需要绕一大圈,有没有简单的方法呢? LocalBroadcastManager。

LocalBroadcastManager是Android Support包提供了一个工具,用于在同一个应用内的不同组件间发送

Broadcast。LocalBroadcastManager也称为局部通知管理器,这种通知的好处是安全性高,效率也高,

适合局部通信,可以用来代替Handler更新UI。

LocalBroadcastManager使用也很简单,四个步骤如下,

1,获取LocalBroadcastManager对象,

LocalBroadcastManager mlocalBroadcastManager = LocalBroadcastManager.getInstance( this ) ;

2, 注册广播接收器

mlocalBroadcastManager.registerReceiver( broadcastReceiver , intentFilter );

3, 发送广播

mlocalBroadcastManager.sendBroadcast( intent ) ;

4, 取消注册广播接收器

mlocalBroadcastManager.unregisterReceiver( broadcastReceiver );

LocalBroadcastManager的全局变量如下,

private final Context mAppContext; //上下文对象
private final HashMap<BroadcastReceiver, ArrayList<IntentFilter>> mReceivers
            = new HashMap<BroadcastReceiver, ArrayList<IntentFilter>>();
private final HashMap<String, ArrayList<ReceiverRecord>> mActions
            = new HashMap<String, ArrayList<ReceiverRecord>>();
private final ArrayList<BroadcastRecord> mPendingBroadcasts  = new ArrayList<BroadcastRecord>();
static final int MSG_EXEC_PENDING_BROADCASTS = 1;
private final Handler mHandler;
private static final Object mLock = new Object();//同步锁
private static LocalBroad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值