LocalBroadcast与常用的Broadcast功能类似,但是具有如下优点:
1.因广播数据在本应用范围内传播,因此不必担心隐私数据泄露的问题。
2.不必担心别的应用伪造广播,造成安全隐患。
3.相比在系统内发送全局广播,它更高效。
所谓有利必有弊,LocalBroadcast有如下缺点:
1.不能跨进程。即使本应用里的两个进程之间也无法通信。
LocalBroadcast的使用方法如下:
发送广播:
Intent intent = new Intent("com.test.action");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
接收广播:
//注册广播
private void registerTestReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.test.action");
LocalBroadcastManager.getInstance(context).registerReceiver(testReceiver, intentFilter);
}
//注销广播
private void unregisterTestReceiver() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(testReceiver);
}
//广播接收器
private BroadcastReceiver testReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() == null) {
return;
}
if ("com.test.action".equals(intent.getAction())) {
//TODO: 逻辑处理
}
}
};