Android - registerReceiver /多动作

时间:2013-05-06 00:13:56

标签: android

我对registerReceiver和addAction有疑问。

假设我有一个servide,它在一个活动中运行(通过一个开始按钮)。该服务将通过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);

现在,让我们说我有三个不同的ACTIONS和三个复选框(每个ACTION一个)。当我按下按钮时,它启动服务,通过addAction方法()检查它必须添加的操作。当然有一个停止按钮。

我的问题:当我使用unregisterReceiver()方法时,如何才能停止只处理我想要的ACTION(我知道哪一个归功于在点击停止按钮之前复选了复选框)?< / p>

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

Sholuld我使用不同的IntentFilter,每个ACTION一个?如果是,怎么样?

如果你有一个甚至是建议,那么欢迎你!

感谢。

1 个答案:

答案 0 :(得分:1)

  

我的问题:当我使用unregisterReceiver()方法时,如何才能停止仅处理我想要的动作(我知道哪一个归功于在点击停止按钮之前检查了复选框)?

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

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