Android Handler

Handler 和 Looper关系

Handler是对我们需要线程执行的一类任务的处理管理类,而Looper是android线程所拥有的循环心跳行为的管理类,例如主线程就是在一开始就执行了Looper.loop(),死循环维持app。然后每个Handler post message到Looper的队列中,Looper循环获取队列中message进行执行

Handler初始化和各种回调

Looper循环获取message,然后会调用每个massage.target.dispatchMessage,从而执行Handler中的代码,也就是下面的

public void dispatchMessage(@NonNull Message msg) {
        if (msg.callback != null) {
            handleCallback(msg);
        } else {
            if (mCallback != null) {
                if (mCallback.handleMessage(msg)) {
                    return;
                }
            }
            handleMessage(msg);
        }
    }

可以看到这里有几个回调并且最后只会执行其中一个

  1. 优先级最高的是message中的callback,这也是我们使用Handler.postXX(Runnable r)方法时候传入我们想执行的代码段的地方

  1. mCallback.handleMessage,这个是在我们初始化一个Handler时候构造函数传入的

  1. handleMessage(),这个是我们构造Handler子类时候必须实现的方法

可以看到message中方法优先级最高,然后是两种实例化Handler方式:匿名子类、实例化都有着自己的传入我们自己处理逻辑的能力

待补充,如果有错误,望指出交流,十分感谢

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值