从handler机制看多线程通讯
android上的handler机制
android.os.Handler通过这个常见的类,去学习更深的知识。
1. handler机制
做过android开发的程序员肯定都清楚这个叫做handler的玩意,所谓只能在主线程做UI操作就是靠它了。
2. handler机制详解
handler机制是android中实现的多线程通讯机制,基于生产消费者模型,它主要由Handler,MessageQueue,Looper几个关键类实现。
- Looper类作为核心类,一对一绑定线程,Looper对象所绑定的线程,作为消费者线程(代表性质的消费者线程就是主现场即UI线程)。
- Handler类作为起到事件处理机的核心,通过一系列post和send方法向Looper中的MessageQueue添加事件,Handler通过构造方法与Looper进行绑定,执行Handler的post和send方法的线程作为生产者线程。
- MessageQueue类作为消息队列储存由Message信息,每个Looper对象对应一个消息队列。
总结一下,每个线程对应一个Looper对象,Handler通过构造方法绑定Looper,使用post和send向与Handler绑定的Looper对象中的MessageQueue添加事件,Looper从MessageQueue中获取事件,交给绑定的Handler处理。
- 在内存中,对象对所有线程是共享的。
- Looper通过ThreadLocal储存为线程对象,实现了每个线程对应一个Looper实例。