首页 > 程序开发 > 移动开发 > Android >

【Android 开发】使用LocalBroadcastManager,让你的广播事件更安全

2017-02-18

【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;
}
}
super.onDestroy();
if (mBroadcastReceiver != null) {
LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mBroadcastReceiver);
mBroadcastReceiver = null;
}
}
发送广播:
LocalBroadcastManager.getInstance(app).sendBroadcast(new Intent(Constants.ACTION_REFRESH_SHOP_MSG));


相关文章
最新文章
热点推荐