在IntentService处理时删除意图

时间:2011-05-22 18:08:11

标签: android service android-intent

如果我正确理解了IntentService上的API文档,那么发送到IntentService队列的意图如果正在处理并按顺序处理就会排队。

是否有一种简单的方法可以告诉IntentService它应该只删除在处理时发送给它的任何意图?

干杯, 托

2 个答案:

答案 0 :(得分:1)

  

有一种简单的方法......?

不,不是我所知道的简单方法,但也许并不太难。

我想我已经看到了类似的问题,其中一个建议就是通过复制Android源代码来简单地定义自己的IntentService类(代码少于150行,其中一些是注释)。 / p>

Intents的'队列'由一个名为ServiceHandler的嵌套类管理,该类扩展了Handler。如果您从源定义自己的'IntentService',您可以添加方法来清除消息队列,如果它正处理Intent(如果这就是您需要的话),甚至可以终止Handler。

答案 1 :(得分:0)

迟到总比没有好。是的,有一个简单的方法。覆盖onStart(),如果您不想处理意图,则返回,否则请致电super.onStart()

public void onStart(Intent intent, int startId) {
  if (processing()) {
    return;
  }
  super.onStart(intent, startId);
} 

但请注意,IntentService的javadoc明确指出onStart()不应该被覆盖。