Handler分析和AsynTask分析

因为线程简通信经常用到Handler所以这里分析一下,顺便说一下AsynTask。

先说说两个概念:

进程

进程操作系统是结构的基础,是计算机中正在运行的程序实例,他可以被分配给处理机并被处理机执行。

线程

线程是进程中某个单一顺序的控制流,也被称为轻量级进程,他是处理机调度的基本单位。

Handler

Handler分析和AsynTask分析_第1张图片
通信原理图

如上图,这个是作者很简单的画出来的,但是能够清晰的展现出工作原理。Handler从工作线程中拿Message消息放到中间的Message池子中,我们专业术语叫做Message Queue先进先出,然后Looper循环着从池子里拿发过来的消息,然后给主线程,主线程通过Handler拿到工作线程的Message,然后做出响应,这就是一个流程。

不多比比上代码截图


Handler分析和AsynTask分析_第2张图片
一个工作线程往主线程发消息的代码

Sorry 只能工作线程往主线程发消息?
当然不可能了,主线程也是可以往工作线程发消息的,只是主线程android自带一个Looper和MessageQueue,如果想要主线程往工作线程中发消息那就要在工作线程中我们自己通过代码制造一个Looper和MessageQueue,然后在走上面的流程就可以了。

coder:


Handler分析和AsynTask分析_第3张图片
主线程往工作线程发消息的截图
Handler分析和AsynTask分析_第4张图片
image.png

可以看到工作线程自己新建了一个Looper和MessageQueue,用于处理主线程发过来的消息,验证了我们上面讲到的工作线程和主线程之间相互发消息的机制。

AsynTask

AsynTask类用于创建并执行工作线程,并能将工作线程中的数据方便的发送给主线程用于展示。

AsynTask完整的结构图

coder:


Handler分析和AsynTask分析_第5张图片
删除缓存的简单处理

上面就是AsynTask完整的结构图,在实际的操作中只需要知道他的使用场景对号入座即可。

希望大家喜欢我的分享。

你可能感兴趣的:(Handler分析和AsynTask分析)