gpt4 book ai didi

android - 澄清 IntentService 的内部运作

转载 作者:搜寻专家 更新时间:2023-11-01 08:35:47 25 4
gpt4 key购买 nike

我试图理解 IntentService 中的特定逻辑,特别是在 ServiceHandler 中:

private final class ServiceHandler extends Handler {
public ServiceHandler(Looper looper) {
super(looper);
}

@Override
public void handleMessage(Message msg) {
onHandleIntent((Intent)msg.obj);
stopSelf(msg.arg1);
}
}

据我所知,stopSelf() 被多次调用 - 每个 startService 调用一次。如果有多个项目要处理,stopSelf 不会中断待处理项目的流程吗?显然这不是实际情况,因为 IntentService 实际上有效,但为什么呢?似乎 stopSelf 应该在处理完所有 Intent 之后调用。

另一个问题 - 在 onCreate 中创建的 HandlerThread 什么时候真正停止?显然它没有被 stopSelf 停止?

最佳答案

stopSelf(int startId) 方法只会停止 Service,前提是它最近一次是使用 startId 启动的。如果 IntentService 在它仍在处理 Intent 时再次启动,则会向它传递一个不同的 startId,因此调用 stopSelf() 与之前的 startId 不会停止。

onCreate() 中启动的 HandlerThread 将在 Service 实例结束时结束,因为它的 Looper 是在 IntentServiceonDestroy() 方法中终止。

关于android - 澄清 IntentService 的内部运作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36804263/

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