BroadcastReceiver启动服务时的顺序

时间:2011-09-16 08:13:53

标签: android service broadcastreceiver

我发现当 BroadcastReceiver onReceive中启动 服务 ()方法, onReceive ()的返回将在 onCreate 之前发生( )被调用的服务。为什么会按此顺序发生?

示例代码如下:BroradcastReceiver的{​​{1}}方法:

onReceive()

public void onReceive(Context context, Intent intent) { Log.i("=====Receiver=======","===== onReceive starts===="); // (1) intent.setClass(context, AService.class); context.startService(intent); Log.i("=====Receiver=======","===== onReceive ends===="); // (2) } 的{​​{1}}方法:

Service

日志顺序为(1)(2)(3),而不是(1)(3)(2)。

有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:3)

该服务有自己的线程,所以我猜它在执行onReceive的线程产生之前不会运行。它也可能是startService发布了一个intent,但在onReceive返回之前它不会被处理。我不知道实际的实现,但我知道startService是一个异步调用,所以你不应该依赖于onReceive的执行顺序。