gpt4 book ai didi

android - BroadcastReceiver 启动Service时的顺序

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:16 24 4
gpt4 key购买 nike

我发现当 BroadcastReceiveronReceive Service 时em>() 方法,onReceive() 的返回将发生在 onCreate( ) 被调用的服务。为什么会按这个顺序发生?

示例代码如下:BroradcastReceiveronReceive()方法:

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)
}

ServiceonCreate()方法:

public void onCreate(){                      
Log.i("=======Service========", "========OnCreate()=== "); //(3)
// some logic here
}

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

谁能帮忙解释一下?

最佳答案

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

关于android - BroadcastReceiver 启动Service时的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com