Android:多个IntentServices - stopService

时间:2012-08-23 08:18:53

标签: android intentservice

我使用唯一的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,然后让队列的其余部分运行。

1 个答案:

答案 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

干杯,
克里斯