LocalBroadcastManager
局部广播管理器,包含在v4包中,因为局部广播的作用域小,所以使用LocalBroadcastManager比发送全局广播更加高效。而且使用LocalBroadcastManager也确保了应用程序外部的任何组件都收不到你广播的intent,所以不会有私人数据货敏感数据(如位置信息等)泄露出去的风险,当然,其他应用程序也不能向你的接收器发送广播,避免了这些接收器称为安全漏洞。
获取LocalBroadcastManager的实例:
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
要注册一个局部BroadcastReceiver,与注册全局接收器类似,需要使用LocalBroadcastManager的registerReciver方法,并传入一个BroadcastReceiver和一个IntentFilter:
localBroadcastManager.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
}, new IntentFilter("com.jason.test"));
(注意:指定的BroadcastRecevier也可用用来处理全局Intent广播。)
要发送一个局部的BroadcastRecevier,也可以使用sendBroadcast方法,并传入要广播的Intent:
localBroadcastManager.sendBroadcast(new Intent("com.jason.test"));
还包含一个用于同步的sendBroadcastSync方法,直到每个已注册的接收器都受到广播后才接触阻塞。