26

我有一个活动,它需要响应广播事件。由于一个activity不能同时是一个广播接收器,所以我做了一个广播接收器。

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

4

1 回答 1

39

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

我使用的模式是:

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

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

于 2010-06-26T03:58:01.320 回答