我发现当 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)。
有人可以帮忙解释一下吗?
答案 0 :(得分:3)
该服务有自己的线程,所以我猜它在执行onReceive
的线程产生之前不会运行。它也可能是startService发布了一个intent,但在onReceive
返回之前它不会被处理。我不知道实际的实现,但我知道startService是一个异步调用,所以你不应该依赖于onReceive的执行顺序。