Handler
Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。每个Hanlder都关联了一个线程,每个线程内部都维护了一个消息队列MessageQueue,这样Handler实际上也就关联了一个消息队列。
【Android|Android 知识点 030 —— Handler,Thread,HandlerThread】可以通过Handler将Message和Runnable对象发送到该Handler所关联线程的MessageQueue(消息队列)中,然后该消息队列一直在循环拿出一个Message,对其进行处理,处理完之后拿出下一个Message,继续进行处理,周而复始。
当创建一个Handler的时候,该Handler就绑定了当前创建Hanlder的线程。从这时起,该Hanlder就可以发送Message和Runnable对象到该Handler对应的消息队列中,当从MessageQueue取出某个Message时,会让Handler对其进行处理。
作用:
Handler可以用来在多线程间进行通信,在另一个线程中去更新UI线程中的UI控件只是Handler使用中的一种典型案例,除此之外,Handler可以做很多其他的事情。Handler是Thread的代言人,是多线程之间通信的桥梁,通过Handler,我们可以在一个线程中控制另一个线程去做某事。
Thread
线程,可以看作是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
public class MyThread extends Thread{
@Override public void run(){
super.run();
// do something
}
}
HandlerThread:封装了Handler + Thread
内部原理 = Thread类 + Handler类机制,即:
通过继承Thread类,快速地创建1个带有Looper对象的新工作线程
通过封装Handler类,快速创建Handler & 与其他线程进行通信。
内部调用Looper.prepare();
Looper.loop();
在Looper对象的构造过程中,初始化了一个MessageQueue,作为该Looper对象成员变量。
loop()就开启了,不断的循环从MessageQueue中取消息处理了,当没有消息的时候会阻塞,有消息的到来的时候会唤醒。
————————————————
版权声明:本文为CSDN博主「门徒Cat」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_37130188/article/details/89483199
推荐阅读
- Android|Android之Handler源码分析(第六篇(其他特性))
- Java版线索化二叉树
- java|java 不写this_还没弄明白Java中的this关键字吗,那来看这篇就够了!
- python|零基础学 Python 有什么建议()
- 国内互联网大厂面试问题和答案|2022秋招—阿里巴巴面试高频问题和答案
- BUG小王子|JDBC及Mybatis常见BUG
- BUG小王子|SpringMVC序列化问题
- 蓝桥真题|【蓝桥真题4】练练填空就想进国赛(拿下大题才能让你真正有底气(蓝桥31日冲刺打卡))
- 安卓逆向|安卓逆向之狐友sig破解