笔记 (简略)-->Android中的消息机制——Handler机制
发布日期:2021-10-07 06:13:08 浏览次数:1 分类:技术文章

本文共 1219 字,大约阅读时间需要 4 分钟。

参考:《深入理解Android 内核设计思想》

内容有缩减,具体去看书。。

 

Handler机制的作用:

1.异步回调机制

2.将工作线程需要操作UI的消息传递到主线程,使主线程可根据工作线程的需求更新UI

Handler机制的组成:

1.handler类

Handler类利用自身的处理机制,对传入的各种Object进行相应的处理并产生最终结果。

作用:        1)处理Message,

                   2)将Message压入MessageQueue中。

 

2.Looper类

Looper从MessageQueue中取出一个Message后,调用Handler.dispatchMessage进行消息派发;后者根据具体的策略将Message发送给相应的责任人。

3.MessageQueue类

消息队列

Handler机制的三个类相互之间的对应关系:

一个Looper中包含一个MessageQueue;

每个线程的Looper都是独立的,一个线程对应一个Looper;

每个Message中最多指定一个Handler来处理事件;

Handler机制的过程:

Looper从MessageQueue中拿出一个Message,交给Handler。

Looper中有一个ThreadLocal<Looper>的静态常量,这说明在每一个线程中都有一个独立的Looper。

Looper如何将Message交给Handler的??

public class Handler{        final MessageQueue mQueue;        final Looper mLooper;        final Callback mCallback;        ......    }

Handler中有成员变量mQueue、mLooper、mCallback,由final修饰,需要在构造函数中初始化。其构造函数有:

public Handler(){}    public Handler(Callback callback){}    public Handler(Looper looper){}    public Handler(Looper looper,Callback callback){}

即在构造函数中部分指定了Looper和Callback,以第一个构造函数为例:

public Handler(){        mLooper = Looper.mLooper();        ......        mQueue = mLooper.mQueue;        mCallback = null;        ......    }

在Handler的构造函数中,直接调用了静态变量的Looper.mLooper()返回了属于当前线程的Looper,于是handler就连接上了当前线程的Looper。

 

 

 

转载地址:https://blog.csdn.net/mengmengmengwang/article/details/108206099 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:handler机制———冒出的问题
下一篇:笔记-->TCP中的超时与重传机制

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 05时55分57秒