Android线程间通信机制:Handler

高效学习模型

  • 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线程工作原理:
微信图片_20210516114302.png
微信图片_20210516114547.png
微信图片_20210516115620.png

三.如何使用Handler?

Handler handler = new Handler(){
@Override
public void handleMessage(final Message msg) {
//这里接受并处理消息
}};
//发送消息
handler.sendMessage(message);
handler.post(runnable);
复制代码

实例化一个Handler并重写 handleMessage方法, 然后在使用的地方调用它的send以及 post系列方法就可以了, 简单易用,并支持延时消息。

四.实现原理

图解原理:
16927e6099e1d48c.webp.jpg

五.总结分享

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享