随笔分类 - Android Handler
摘要:一、Looper检测卡顿 熟悉Handler机制的话,我们会知道Looper是给线程提供处理消息能力的类,在Android Framework启动的时候,就会创建一个Main Looper即主线程对应的Looper,Looper中会维护一个MessageQueue,负责接收Handler发送过来的消
阅读全文
摘要:一、Handler机制与ThreadLocal 在Handler机制的时候,我们会接触到Looper中的一个很重要的类:ThreadLocal,ThreadLocal并不是线程,它的作用是可以在每个线程中存储数据。 Handler在创建的时候就会获取当前线程的Looper来构造消息循环系统,获取的方
阅读全文
摘要:一、Handler Message 种类 Handler的Message种类分为3种: 普通消息 屏障消息 异步消息 其中普通消息又称为同步消息,屏障消息又称为同步屏障。 我们通常使用的都是普通消息,而屏障消息就是在消息队列中插入一个屏障,在屏障之后的所有普通消息都会被挡着,不能被处理。不过异步消息
阅读全文
摘要:在深入系统的学习Handler的时候,我们接触到了Looper之所以死循环不会导致CPU使用率过高,是因为使用了Linux下的pipe和epoll机制。 Android的应用层通过Message.java实现队列,利用管道和epoll机制实现线程状态的管理,配合起来实现了Android主线程的消息队
阅读全文
摘要:在深入系统的学习Handler的时候,我们接触到了Looper之所以死循环不会导致CPU使用率过高,是因为使用了Linux下的epoll机制。 Android的应用层通过Message.java实现队列,利用管道和epoll机制实现线程状态的管理,配合起来实现了Android主线程的消息队列模型。
阅读全文
摘要:一、‘非UI线程更新UI’问题探究 Android开发的时候非UI线程不能更新UI,这个是大家都知道的开发常识。但是当问到为什么?可能我们就会有些含糊了。 本文我们就针对这个问题进行探讨并进行一定的思维发散,来加深我们对Android界面刷新机制的理解。 1. UI线程的工作机制 主线程的工作机制可
阅读全文
摘要:做Android开发的都应该知道Handler的运行机制,这个问题属于老生常谈了。 这里再简单赘述一下: Handler 负责发送消息; Looper 负责接收 Handler 发送的消息,并在合适的时间将消息回传给Handler; MessageQueue是一个存储消息的队列容器。 本文我们会详细
阅读全文