您不应该使用普通的广播来进行通信Activities
and Services
在您自己的应用程序内部。您应该使用本地广播!首先你必须定义一个BroadcastReceiver
就像普通广播一样:
private static final String ACTION_EXAMPLE = "ACTION_EXAMPLE";
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(ACTION_EXAMPLE.equals(intent.getAction())) {
...
}
}
};
之后您可以获得LocalBroadcastManager
像这样:
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
并且您可以注册BroadcastReceiver
像这样(通常你注册一个BroadcastReciever
in onResume()
):
@Override
public void onResume() {
super.onResume();
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
IntentFilter filter = new IntentFilter(ACTION_EXAMPLE);
manager.registerReceiver(this.receiver, filter);
}
不要忘记注销BroadcastReceiver
稍后(在onPause()
):
@Override
public void onPause() {
super.onPause();
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
manager.unregisterReceiver(this.receiver);
}
最后你可以像这样发送本地广播:
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
manager.sendBroadcast(intent);