美文网首页
从 sendEmptyMessage 开始,一步步解剖Handl

从 sendEmptyMessage 开始,一步步解剖Handl

作者: 笑羿君 | 来源:发表于2018-06-30 19:45 被阅读0次

桑小年

关注

2018-06-30 16:07 · 字数 1665 · 阅读 10 ·  Android源码

工作的时候发现自己对于很多东西用起来得心应手,原理机制也背诵的滚瓜烂熟,但是一问到源码脑子就....瓦特了!所以最近准备从头开始学习源码,学习大神们优秀的思想!

本文是对Handler机制的源码分析,目的是为了能够从源码角度一点点的理解Handler机制,里面会出现大量的源码,所以会比较枯燥,但是只要认真看完,相信你一定会对Handler机制的实现方法有更加清晰的认识

    Handler是用起来非常简单!

private Handler handler = new Handler(){

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            //处理接收到的消息

        }

    };

初始化之后,在子线程进行完耗时操作之后,使用

handler.sendEmptyMessage(what)

好了,现在就从sendEmptyMessage 方法开始,一步步的解析handler整个工作流程 — — 注意,Handler开始向消息队列发送消息了;

点进去之后,我们会发现,sendEmptyMessage 、sendMessage 最终都是在调用 sendMessageAtTime 方法,将发送的消息放入messgeQueue;需要注意的一点是,sendMessageDelayed方法中,已经将 delayMillis 延迟时间转换成了 SystemClock.uptimeMillis() + delayMillis,指的是该消息被取出来执行的时间,这一点会在MessageQueue中显的比较重要

    //直接调用 sendEmptyMessageDelayed 方法

    public final boolean sendEmptyMessage(int what){

        //直接调用 sendEmptyMessageDelayed 方法

        return s

相关文章

网友评论

      本文标题:从 sendEmptyMessage 开始,一步步解剖Handl

      本文链接:https://www.haomeiwen.com/subject/sfkxuftx.html