【Android 开发笔记】使用LocalBroadcastManager,让你的广播事件更安全
应用1注册了intent的action为“com.aaa”的广播接受者,
在应用2,发送了intent的action为“com.aaa”的广播,
结果应用1注册的广播接收者的onReceive()调用了。
问题:
这样就会导致当别的应用的广播的action跟自己应用的action相同的时候,自己应用出现混乱。
解决:
使用android-support-v4包的
LocalBroadcastManager类来保证广播只接收本应用的广播。
注册的时候
// 注册广播
private void regiterBoradcastReceiver() {
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction(Constants.ACTION_REFRESH_SHOP_MSG);
// 注册广播
LocalBroadcastManager.getInstance(mContext).registerReceiver(mBroadcastReceiver, myIntentFilter);
}
反注册:
public void onDestroy() {
发送广播:super.onDestroy();
if (mBroadcastReceiver != null) {LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mBroadcastReceiver);
mBroadcastReceiver = null;
}
}
LocalBroadcastManager.getInstance(app).sendBroadcast(new Intent(Constants.ACTION_REFRESH_SHOP_MSG));