context.startService()调用是否保证服务以与发送顺序相同的顺序获取?

时间:2012-04-05 14:47:45

标签: android android-intent android-service

服务是否保证以与发送服务相同的顺序获取context.startService()调用?

考虑活动:

Intent intent;

intent = new Intent(MyIntents.ADD_BATCH_ACTION);
intent.putExtra(MyIntents.BATCH_ACTION_NAME, "Bake donuts");
startService(intent);

intent = new Intent(MyIntents.ADD_BATCH_ACTION);
intent.putExtra(MyIntents.BATCH_ACTION_NAME, "Make a coffee");
startService(intent);

intent = new Intent(MyIntents.ADD_BATCH_ACTION);
intent.putExtra(MyIntents.BATCH_ACTION_NAME, "Fetch coffee and donut to room 12");
startService(intent);

startService(new Intent(MyIntents.FLUSH_ADDED_ACTIONS));

有些行动可以做很多共同的工作,如果我确定它们是批量执行的,我可以优化服务。

我可以假设服务onStartCommand将以相同的顺序执行吗?

问候,Tomek

1 个答案:

答案 0 :(得分:1)

  

服务是否保证以与发送服务相同的顺序获取context.startService()调用?

虽然我认为它们碰巧按顺序发生,但AFAIK这并不是记录在案的行为,因此我不会指望它。

  

有些行动可以做很多共同的工作,如果我确定它们是批量执行的,我可以优化服务。

然后只调用startService()一次,其中包含“批次”中的所有内容。 Intent extras支持多种类型的数组,因此请尝试打包一个额外的数组而不是一个。