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
}
}