我有一个Activity,其中在方法内部向位于Activity的片段中的自定义接收器发送广播...我想设置一个权限作为sendBroadcast的第二个参数,所以我的接收器只能接收特定的广播...
活动的sendBroadcast():
@Override
public void update(Observable observable, Object connectionStatus) {
Log.e(debugTag, connectionStatus+"");
intent = new Intent("networkStateUpdated");
intent.putExtra("connectivityStatus", (int) connectionStatus);
sendBroadcast(intent, "mypermission");
}
在Fragment的onActivityCreated
中初始化自定义Receiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
connectionStatus = intent.getExtras().getInt("connectivityStatus");
}
};
@Override
public void onResume() {
super.onResume();
getActivity().registerReceiver(broadcastReceiver, new IntentFilter("networkStateUpdated"), "mypermission", null);
}
@Override
public void onPause() {
super.onPause();
getActivity().unregisterReceiver(broadcastReceiver);
}
设置" mypermission"因为sendBroadcast的第二个参数显然不起作用..
答案 0 :(得分:1)
当您需要在进程之间发送消息时,请使用系统广播(例如,sendBroadcast()
上调用的Context
)。
在一个过程中,使用系统广播会增加IPC开销和安全问题。相反,使用某种进程内事件总线。就个人而言,我使用greenrobot's EventBus。 LocalBroadcastManager
是Android支持库的一部分。其他人更喜欢Square's Otto或其他事件总线实现。这些在开销方面较便宜,而且它们对您的应用程序来说是私有的,因此没有新的安全问题。