gpt4 book ai didi

android - ui-threads messagequeue、looper和handler类之间的行为

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

我发布这个问题是因为我想知道我对基础知识的想法是否正确。

应该清楚的是,UI-Thread 包含一个 MessageQueue,它与一个 Looper 相关联,以从队列中获取消息/可运行对象以进行处理。

此外,Handler 将消息/可运行对象发送到 Looper,后者将对象集成到 MessageQueue 中。

如果我是对的,MessageQueue 是堆栈,Looper 是传入和传出对象的看守者。

这引出了我的下一个问题。如果一个消息对象被UI-Thread处理过,它会被回收到全局消息池中。但是没有关于此的明确文档。这个消息池有特定的大小吗?如果我发送/获取消息,它是否可扩展/可收缩?

如果这是真的,池可能会因为获取太多消息而枯竭。我不敢相信这一点。想一想这样一种情况,您必须在特定时间段内获取一些消息而不将它们发回以供回收。

经过编辑使其更易于理解。

最佳答案

可以看看Handler的源码和 Message在框架中查看有关其工作原理的详细信息。

简而言之,池是 Message 对象的链表(最大 MAX_POOL_SIZE),将由 recycle() 填充> 方法。 obtain() 方法只是首先检查池中是否有任何可用的 Message 可以重复使用,如果没有可用的就分配一个新的。

关于android - ui-threads messagequeue、looper和handler类之间的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12441425/

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