我有一项活动,需要回应广播事件。 由于活动不能同时成为广播接收者, 我做了一个广播接收器。
我的问题是:如何通过广播接收器通知活动? 我相信这是一种常见的情况,那么有这样的设计模式吗?
答案 0 :(得分: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);
}
}
因此,这种方式在创建类时实例化接收器(也可以在onCreate中执行)。然后在onResume / onPause中我处理注册和取消注册接收器。然后在接收者的onReceive
方法中,我做了一些必要的事情,使活动在接收广播时以我想要的方式做出反应。