1.什么是Handler
用于管理多线程对UI的操作
2.为什么会出现Handler
1)只允许主线程对UI操作,UI线程是非线程完全的。(非线程安全,多线程操作同一代码,会产生不确定的结果)为了避免多个线程同时操作UI所造成的线程安全问题。
3.Handler功能
1)在新启动的线程中发送消息
2)在主线程中获取,处理消息
如何处理同步问题:在主线程和开启的新线程中使用MessageQueue队列,开启的新线程发送的消息时把消息发送到与之关联的MessageQueue,然后主线程的Handler被调用,从MessageQueue中取出相应的消息处理。
4.Handler实现机制
读取消息使用到的方法:
void handleMessage(Message msg),进程间重写这个方法处理消息;
final boolean hasMessage(int what),检查消息队列中是否包含what属性为指定值的消息。
final boolean hasMessage(int what,Object object);
Message obtainMessage();获取消息,可被多种方式重载
5.深入理解Handler工作机制
Looper:每个线程对应一个Looper,负责管理MessageQueue,将消息取出交给Handler进行处理。
MessageQueue: 负责管理Message,接受Handler发送过来的Message.