1.Handler的作用
a:在非UI线程更新UI
b:发送延迟消息
2.为什么Android设计只能ui线程更新ui?
a:解决多线程并发问题
b:提高界面更新的性能问题
c:架构设计的简单
3.Handler相关的异常
a:只有主线程才能更新ui
解决办法:
向主线程发送消息,在主线程的handleMessage方法里面更新UI
b:在子线程中创建Handler对象的前提是要调用Looper.prepare()方法,主线程里面默认调用了prepare方法
解决办法:
4.Handler,Looper,MessageQueue之间的关系
a:Handler封装了消息的发送,主要负责发送和处理消息
b:Looper内部包含一个消息队列,所有的Handler的消息都走向这个队列,loop方法是一个死循环,
不断的从消息队列取消息,有消息就处理,没有就阻塞
c:MessageQueue是消息队列,可以添加消息
d:Handler内部与Looper关联,也就是说在Handler内部可以找到Looper
非UI线程如何更新UI组件:
1.Activity.runOnUiThread
2.View.post
3.View.postDelayed