高效学习模型
- what–>why–>how 模型
- 是什么?–>为什么使用?–>如何使用?–>实现原理–>总结分享(学以致用)
一.Handler是什么?
- Handler是Android提供的一种线程间通信的机制
二.为什么使用Handler?
1.UI线程模型(理解):
当启动一个应用时,Android系统会开启一个线程来执行这个应用,该线程即为主线程(Main Thread),
该线程是唯一的,负责处理所有的界面显示及用户操作的响应任务,即负责android.widget和android.view包中所有控件的使用,
由于它负责所有的UI处理工作,故称为UI线程;
如果UI线程中加入了耗时操作,就会阻塞UI线程,给用户带来"死机"的感觉,故耗时操作必须新开线程执行,
但Android规定:非UI线程不能访问UI,故而引入了Hanler来进行线程间通信;
2.该模型中Android做了以下两点规定:
1).不能阻塞UI线程大于5s,否则会报ANR错误;
2).不能让非UI线程访问UI,否则会直接报错;
3.Android是使用大量的消息驱动方式来进行交互的,比如四大组件Activity,Service,Broadcast,ContentProvider的启动过程的交互,都离不开消息机制,
消息机制涉及Handler/Looper/MessageQueue/Message等4个类;
复制代码
图解UI线程工作原理:
三.如何使用Handler?
Handler handler = new Handler(){
@Override
public void handleMessage(final Message msg) {
//这里接受并处理消息
}};
//发送消息
handler.sendMessage(message);
handler.post(runnable);
复制代码
实例化一个Handler并重写 handleMessage方法, 然后在使用的地方调用它的send以及 post系列方法就可以了, 简单易用,并支持延时消息。
四.实现原理
图解原理:
五.总结分享
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END