handler是android开发中常用的一个类,下面我总结一下我对handler的理解。
1.handler是什么?
handler是android提供的更新UI线程的一套机制,一套处理/发送消息的机制
2.为什么要用handler?
(1) android在设计的时候,就封装了handler的一整套消息发送、接收、处理的机制,若不遵循,会抛出异常
(2) 根本目的是为了解决多线程并发问题,假设如果在一个Acticity当中,有多个线程更新UI,又都没有加锁机制,那么会UI就会错乱!
(3) 如果自己更新UI加锁,那么会性能会下降!
我们只要遵循这一套机制,不用管什么多线程并发问题,记住只要是更新UI的,都要在主线程里,在消息队列当中去轮询处理。
3.handler的原理?
handler封装了消息的发送(主要包括消息发送给谁)
Lopper:(1) 内部包含一个消息队列也就是MessageQueue,所有的handler发送的消息都走向这个消息队列
(2) Looper.looper方法,就是一个死循环,不断的从MessageQueue去消息,如有消息就处理消息,没有消息就阻塞
MessageQueue:就是一个消息队列,可以添加消息,并处理消息
Handler:内部会和Looper关联,也就是说在Handler的内部可以找到Looper,找到了Looper也就找到了MessageQueue,在
Handler中发送消息,其实就在向MessageQueue中发送消息
总结:handler负责发送消息,Looper负责接收Handler发送的消息,并直接吧消息回传给handler自己,而MessageQueue就是一个
存储消息的容器!
我是怎么知道这些的!!!!!??? 我一直看慕课网的,上面讲源代码。。。马马虎虎地懂了。。。。给个图,有助于理解他们之间的关系!
一大堆理论,只要理解就好了,最主要的是要会用!!! 上例子!!!!!
1. handler更新UI线程
常用方法:post
2.postDelayed(Runnable):三张图片循环播放,点击按钮结束
3. 通过传递message,处理message
处理message:第一种有返回值,可以截获!
发送message:两种方法
4. 在主线程中通知子线程工作:
以后要多些博客,记录自己学习得点点滴滴