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

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






你可能感兴趣的:(android,开发)