LocalBroadcastReceiver 相对 于BroadcastReceiver,它只能用于应用内通信,安全性更好,更高的运行效率。也是需要发送应用内广播时的官方所推荐的方式。
①首先先说一下于BroadcastReceiver的区别:BroadcastReceiver的通信是走 Binder 机制的,而 LocalBroadcastManager 不是,点进源码去看看吧。
②先自定义 BroadcastReceiver 子类:
public class LocalBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
localMsg.setText(intent.getStringExtra(MSG_KEY));
}
}
③注册接收器:
LocalBroadcastReceiver localReceiver = new LocalBroadcastReceiver();
LocalBroadcastManager.getInstance(context).registerReceiver(localReceiver,
new IntentFilter(ACTION_LOCAL_SEND));
④发送广播:
LocalBroadcastManager.getInstance(context).sendBroadcast(new
Intent(ACTION_LOCAL_SEND));
⑤取消注册:
LocalBroadcastManager.getInstance(context).unregisterReceiver(localReceiver);