我使用唯一的id值多次启动IntentService。当我重新创建intent并使用它在当前的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,然后让队列的其余部分运行。
答案 0 :(得分:1)
我认为您可能需要在此处实施您自己的意向服务。 Looking at the code
虽然查看stopSelf(int)
方法,但如果您知道创建每个意图的内容,则可以手动执行此操作。
mActivityManager.stopServiceToken(
new ComponentName(this, mClassName), mToken, startId);
类似于:
mActivityManager.stopServiceToken(
new ComponentName(this, IntentService.class.getSimpleName()), null, mStartId);
我没有尝试过,但可能会朝着正确的方向努力。虽然我认为它可能不会做任何事情,因为它只会停止运行服务。
否则你将不得不创建自己的IntentService,你可以在其中触发删除意图..可能值得推动@commonsguy
干杯,
克里斯