有关Handler中Message的处理过程

处理流程

handler中处理message的来源有三个层级

第一层,是来自于post的runnable对象,post方法会将runnable赋值给msg.callback,在 dispatchMessage 的时候首先判断是否存在msg.callback

第二层,如果以上msg.callback不存在,那就判断handler.callback是否存在,如果存在,且callback.handleMessage方法返回true,那么dispatchMessage方法return

第三层,最后如果handler.callback不存在,或者handler.callback.handlerMessage方法处理完之后返回了false,那么会调用本身handlerMessage方法处理msg

贴代码最直观,写出来就巩固下记忆

    public void dispatchMessage(Message msg) {
            if (msg.callback != null) {
                handleCallback(msg);
            } else {
                if (mCallback != null) {
                    if (mCallback.handleMessage(msg)) {
                        return;
                    }
                }
                handleMessage(msg);
            }
        }
复制代码

转载于:https://juejin.im/post/5c360c8ff265da615e05a6fe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值