MessageQueue:内部存储一组消息,单链表结构存储。
Looper:无限循环去查找是否有消息,有消息都执行无消息就等待(运行在Handler所创建的线程)
Handler:切换任务到某个线程去执行
Android为什么不选择在子线程执行UI:
缺点
1:加上锁机制会让访问ui的逻辑变得复杂。
2:锁机制会降低UI访问的效率,阻塞某些线程的执行
ThreadLocal:在多个线程中互不干扰地存储和修改数据。在每个Thread类的内部有个专门存储线程的ThreadLocal数据(ThreadLocal.Values localValues)不同线程的数据不同。此类泛型存储,根据当前线程获取Vlaues用于存储和修改。

本文深入探讨了Android中UI更新的机制,包括MessageQueue、Looper和Handler的作用与工作原理,解释了为什么Android不选择在子线程直接更新UI的原因,以及ThreadLocal在多线程环境下如何确保数据的安全性和独立性。
801

被折叠的 条评论
为什么被折叠?



