Handler机制:
1)主线程UI:
本身就有一个Looper机制,其中有Handler,中包含了消息队列MessageQueen:
2)UI线程模型:
UI主线程不允许其他线程操作组件,只有UI主线程能够绘制界面。
3)分析:子线程发送消息给主线程、主线程发送消息给子线程区别:
- 子线程发送消息给主线程:由于主线程中本身就有Looper机制,里面有消息队列,所以子线程只需要获得主线程中的Handler对象,用它发送消息,主线程中的Looper会查看到排队的message。
- 主线程发送消息给子线程:子线程中没有Looper机制,所以需要创建Looper和Handler,然后主线程用子线程中的Handler实例进行发送消息,子线程就能收到。
图解looper管理消息:
4)范例:倒计时:
功能:点击按钮,开始60秒倒计时,时间再textview显示,结束时,按钮显示“计时结束”。
思路:这里是子线程发送消息给主线程。
发送的是count秒数,主线程接收到消息,绘制界面显示到textview中。
创建主线程中Handler的子类,重写其handleMessage()方法,接收消