持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
前言
为了了解Android的Thread和Handler的操作结构,我们来看看Thread、Looper和MessageQueue 。在本文中,我们通过每个类的 Android 框架源代码并解释了它们的工作原理。
为什么在Android中使用Thread-Looper-Handler结构?
Android 的主线程基本上负责组件生命周期方法和其中的方法调用。可以参考前面写的【Android主线程】以获取有关主线程的更多详细信息!
为了避免这些任务之间的竞争条件和死锁,单线程模型应用于主线程。由于单线程模型不必担心资源访问的同步,也不需要上下文切换的成本,因此可以防止竞争条件和死锁。
Android中的单线程模型是指只有一个线程负责组成Android屏幕的视图或视图组的原则。单线程模型有两个规则: 1. 首先,不要阻塞主线程(UI线程)。 2. 其次,Android UI 工具包应该只能从 UI 线程访问。
系统不会为每个组件实例创建单独的线程。在同一进程中运行的所有组件均在界面线程中进行实例化,并且对每个组件的系统调用均由该线程进行分派。
单个线程上的长时间操作会使您的应用程序响应速度降低或导致 ANR。因此,主线程应该只负责固定的最小数量的任务,特别是长任务应该由另一个线程处理。因此,为了使这个主线程和其他线程协作,线程之间需要通信。在Android中,你可以使用Looper和Handler在其他线程和主线程之间进行通信。
总结
综上所述,很好理解Android中的Thread-Looper-Handler结构是一个支持单线程模型应用于主线程时所需的线程间通信方式的结构。