gpt4 book ai didi

java - 一个looper是如何继续维护一个线程的?

转载 作者:行者123 更新时间:2023-11-30 00:50:01 25 4
gpt4 key购买 nike

在查看 android 文档时,我发现了以下 looper.loop() 代码。

public static void loop() {
...
for (;;) {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}
...
msg.target.dispatchMessage(msg);
...
}

这对我来说没有意义,因为我认为循环作业是为了延长线程的生命周期并将下一条消息排队等待处理程序处理。但是,您可以看到有一个返回值,该返回值不会使它在没有消息时循环退出从而退出线程吗?

那么looper究竟是如何让线程继续查询和执行任务的呢?

最佳答案

However, you can see there is a return and wouldn't that return makes it so that when there are no msg the loop quits hence quitting the thread?

没有。您必须能够在某个时候结束线程。如果您想终止所有者或确实彻底关闭整个过程怎么办?

你可以从这个 fragment 中推断出如果没有更多的消息但我们想继续监控,queue.next() 将会阻塞。它只会在有另一条消息时返回一个值。

返回 null 表示发生了其他事情,即 looper 出于某种原因正在消失。

关于java - 一个looper是如何继续维护一个线程的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213623/

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