Android是否保证意图的顺序?

时间:2010-11-09 21:39:48

标签: android concurrency android-intent

发送两个意图(一个通过startService后跟另一个通过startActivityForResult为了示例),Android是否保证在第二个意图(活动)之前处理第一个意图(服务) ?更具体地说,在这种情况下,它是否保证在Service.onStartCommand之前调用Activity.onCreate

这假设一切都在同一个进程中运行,因此来自多个主线程的线程问题不会干扰。

我知道Android并不保证单个意图的处理顺序(收件人的顺序无法保证,但可能受到意图过滤器优先级的影响)但我找不到任何提及意图之间的顺序。

我个人认为,鉴于单个主应用程序线程,订单将被维护,但我面临一些我很难解释的错误,除非意图的顺序发生变化。

2 个答案:

答案 0 :(得分:1)

这应该有所帮助。 BroadcastReceiver Developer Page

关键是开始活动的意图在语义上非常不同。

通过记录来测试订单似乎很容易。

答案 1 :(得分:1)

  1. 我不相信Android有任何保证 - 特别是,我相信Context.startService会异步修改:在您发表评论后,我认为您是正确的startService仅在服务调用其onCreate方法后才会返回。但是,如果Service在另一个应用程序中,那么它通常不会在同一个进程中运行,更不用说在同一个程序中。
  2. Android可能不会提供此保证,因为它已经声明虽然尝试以保持服务正常运行,但理论上 {1}}以及您对Context.startService的致电。
  3. 为什么你首先需要这样的保证?在需要时通过Activity.startActivityForResultstartService获取服务,指定应用程序在达到生命周期阶段时应该发生的事情,并让Android自行管理生命周期。
  4. 脚注:另外,如果您的bindService已在投放,则在致电Activity时可能无法调用onCreate方法。