2

我多次使用唯一的 id 值启动 IntentService。当我重新创建意图并使用它在当前 IntentService 上调用 stopService 时,整个 IntentService 队列在停止当前 IntentService 之上被取消。此外,对队列中的 IntentService 调用 stopService 无效。

启动服务:

Intent intent = new Intent(context, IntentService.class);
intent.putExtra("action", "scan");
intent.putExtra("id", id);
context.startService(intent);

停止服务

Intent intent = new Intent(context, IntentService.class);
intent.putExtra("action", "scan");
intent.putExtra("id", id);
context.stopService(intent);

我希望将具有关联 ID 的 IntentService 停止/从队列中删除,然后让队列的其余部分运行。

4

1 回答 1

1

我认为您可能必须在这里实现自己类型的意图服务。看代码

尽管查看了该stopSelf(int)方法,但如果您知道创建每个意图的内容,则可以手动执行此操作。

mActivityManager.stopServiceToken(
                new ComponentName(this, mClassName), mToken, startId);

所以像:

mActivityManager.stopServiceToken(
                new ComponentName(this, IntentService.class.getSimpleName()), null, mStartId);

我还没有尝试过,但可能会朝着正确的方向轻推。虽然我认为它可能不会做任何事情,因为它只会停止运行服务。

否则,您将不得不制作自己的 IntentService ,您可以在其中触发删除意图..可能值得轻推@commonsguy

干杯,
克里斯

于 2012-08-23T09:20:51.390 回答