【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));

 

posted @ 2017-02-17 15:23  leafseelight  阅读(158)  评论(0)    收藏  举报