Hander机制:
Hander机制,是我们在编程过程中,与应用程序之间进行交互用到最多的机制,当我们对应用程序进行UI操作的时候,我们不能在子线程(非UI线程)中直接对ui进行操作,这时候我们就需要用到handler,handler的原理是一个发送消息,处理消息的过程。
Android Handler机制 :每一个消息都需要被指定的Handler处理,通过Handler创建消息便可以完成此功能。Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。消息池提高了消息对象的复用,减少系统垃圾回收的次数。
一个Thead中可以建立多个Hander,通过msg.target保证MessageQueue中的每个msg交由发送message的handler进行处理 ,但是每个线程中最多只有一个Looper,肯定也就一个MessageQuque。
Handler的具体用法有两种:
a、1、在UI线程中创建handler
2、把UI线程中创建好的handler的内存地址引用传递给子线程
3、在子线程中的run方法中,进行handler消息池中消息的获取。
4、封装消息内容
5、通过handler发送该消息。
6、在handler中接收该消息,进行消息处理。
(PS:以上所有的handler,指的都是UI线程中创建的handler)
b、1、在UI线程中获取Looper
2、把UI线程中获取的Looper传递给子线程
3、在子线程的run方法中通过looper的传递实例化handler
(该handler即为处理UI控件的handler)
4、直接复写该handler的handleMessage方法,完成UI更新。