如何通过广播接收器通知正在运行的活动?

Hen*_*nry 22 android ipc broadcastreceiver

我有一个活动,它需要响应广播事件.由于活动不能同时成为广播接收者,我制作了一个广播接收器.

我的问题是:如何通过广播接收器通知活动?我相信这是一种常见的情况,那么有这样的设计模式吗?

Ric*_*ler 38

广播是通知.:)如果你想说,根据收到的广播启动活动或服务等,那么你需要一个独立的广播接收器,你把它放在你的清单文件中.但是,如果您希望活动本身响应广播,那么您可以在活动中创建广播接收器的实例并在那里注册.

我使用的模式是:

public class MyActivity extends Activity {
    private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(...) {
            ...
        }
   });

    public void onResume() {
        super.onResume();

        IntentFilter filter = new IntentFilter();
        filter.addAction(BROADCAST_ACTION);

        this.registerReceiver(this.receiver, filter);
    }

    public void onPause() {
        super.onPause();

        this.unregisterReceiver(this.receiver);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,这种方式在创建类时实例化接收器(也可以在onCreate中执行).然后在onResume/onPause中我处理注册和取消注册接收器.然后在接收者的onReceive方法中,我做了一些必要的事情,使活动在接收广播时以我想要的方式做出反应.

  • 那么你必须在活动中定义接收器吗?如果您想要整个应用中的行为怎么办? (9认同)