0

我有一个关于 registerReceiver 和 addAction 的问题。

假设我有一个服务,它在一个活动中运行(通过一个开始按钮)。该服务将通过 registerReceiver 注册一个接收者。在服务的 onStartcommand() 方法中有类似的东西:

final IntentFilter filter1 = new IntentFilter();
filter1.addAction(ACTION_1); // The ACTION is defined in my code
this.br_receiver = new MyBroadcastReceiver();  // The class is defined in my code
this.registerReceiver(this.br_receiver, filter1);
return (START_STICKY);

现在,假设我有三个不同的操作和三个复选框(每个操作一个)。当我按下按钮时,它会启动服务来检查它必须通过 addAction 方法()添加哪些操作。当然还有停止按钮。

我的问题:当我使用 unregisterReceiver() 方法时,我怎样才能停止只处理我想要的操作(由于在单击停止按钮之前选中了复选框,我知道哪些操作)?

我不确定我是否清楚,所以我将以不同的方式解释它:我知道一种解决方案是在我启动服务时添加所有 ACTIONS (addAction),然后在 onReceive 方法()中,我可以使用三个布尔值来了解要处理的操作。我认为这个解决方案很糟糕。

我应该使用不同的 IntentFilter,每个 ACTION 一个吗?如果是,如何?

如果您有答案甚至建议,欢迎您!

谢谢。

4

1 回答 1

1

我的问题:当我使用 unregisterReceiver() 方法时,我怎样才能停止只处理我想要的操作(由于在单击停止按钮之前选中了复选框,我知道哪些操作)?

选项 #1:注册三个接收器,每个操作一个,并为用户取消选中的操作取消注册一个。

选项#2:仅注册用户选中的那些操作,当用户更改复选框的选中/未选中状态时,取消注册并重新注册接收器。

于 2013-05-06T00:16:07.493 回答