android之handler的总结

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. 在主线程中通知子线程工作:



以后要多些博客,记录自己学习得点点滴滴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值