Handler的使用和机制

Handler的中 Message 处理流程源码

<pre>

public void dispatchMessage(Message msg) {

if (msg.callback !=null) {

handleCallback(msg);

}else {

if (mCallback !=null) {

if (mCallback.handleMessage(msg)) {

return;

}

}

handleMessage(msg);

}

}

</pre>

处理流程分为了三步:

1.msg.callback是Hanlder中的 Runnable 接口,handleCallback(msg)调用了 Runnable 的 run()方法

2.mCallback是Handler中的的接口,mCallback.handleMessage(msg)调用了接口方法

3.调用Handler自身的handleMessage(msg)方法

Handler的使用

针对Handler的处理流程,Handler封装了几种方法,方便使用Handler

1.Handler mHandler = new Handler()

  mHandler .post(runnable)

2.不需要继承Handler类,初始化时传入一个CallBack对象

Handler mHandler = new Handler(callback)

3.继承Handler类,重写 handleMessage(msg)方法;实例化这个自定义类,和一个Message,

mHandler.sendMessage(msg)

这三种Hanlder的使用方法分别对应了Handler对Message处理流程的三个步骤

Hanlder类结构


图中可以看到Handler类的成员变量:mCallback,mLooper,mQueue,以及封装进来的方法,发送方法包括:以send开头,post开头的一系列方法,处理方法包括:handleMessage(),dispatchMessage()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容