Android - LocalBroadcast

Android里面的广播按类型分为两种:标准广播和有序广播。从应用软件安全角度又分为:系统广播和本地广播。 下文主要介绍本地广播。
本地广播有以下3个优点:

  • 发送的广播不会离开我们的程序,机密数据不会泄露。
  • 其他的程序无法将广播发送到我们程序的内部,因此无安全隐患。
  • 发送本地广播比发送系统全局广播更高效。

01 LocalBroadcastManager

使用系统提供的LocalBroadcastManager这个类来发送广播、注册和注销广播接收器。

  • 01 发送本地广播
Intent intent = new Intent();
intent.setAction(Constants.ACTION_ACCOUNT_LOGIN_SUCCESS);
//ContextHelper.getContext().sendBroadcast(intent);
//改为发送本地广播比发送系统全局广播更加安全和高效。
LocalBroadcastManager.getInstance(ContextHelper.getContext()).sendBroadcast(intent);
  • 02 注册本地广播接收器
IntentFilter filter = new IntentFilter();
filter.addAction(Constants.ACTION_ACCOUNT_LOGIN_SUCCESS);
if (mReceiver == null) {
    mReceiver = new LoginReceiver();
    //getActivity().registerReceiver(mReceiver, filter);
    // 注册本地广播接收器
    LocalBroadcastManager.getInstance(getContext()).registerReceiver(mReceiver, filter);
}
  • 03 注销本地广播接收器
@Override
public void onDestroy() {
    if (mReceiver != null) {
        //getActivity().unregisterReceiver(mReceiver);
        // 注销本地广播接收器
        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mReceiver);
    }
    super.onDestroy();
}
  • 04 LoginReceiver
private class LoginReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // do something
    }
}

你可能感兴趣的:(Android - LocalBroadcast)