从源码分析Handler的postDelayed为什么可以延时?

昨天一个朋友去面试,回来说面试官问了他一个有意思的问题,然后被面试官各种调侃。。

什么问题呢?中国人都能看得懂的一个问句:Handler的postDelayed为什么可以延时???

握草~我只知道Handler有个延时的方法叫postDelay,为啥延时我哪知道哇!!!哈哈,相信很多朋友都是有这种感受的。今天单独开篇博客来说这个问题,也表达了我对Handler的敬重之情吧,不废话了,开车~~

我们由简入深,步步击破,先来看看用法:

从源码分析Handler的postDelayed为什么可以延时?_第1张图片

提交一个任务到MessageQueue,Handler提供了上面的5种方式。相信大家看到方法即知意。今天的主角也正好是最后一个。一般我们都会使用Handler直接post一个延时任务:

从源码分析Handler的postDelayed为什么可以延时?_第2张图片

第一个参数就是要延时执行的任务,第二个参数就是延时时间(毫秒级)。

执行成功则返回true,并将任务添加到消息队列中(MessageQueue)。

注意:返回true不代表任务执行成功,只是成功提交到任务队列。如果Looper提前在任务延

你可能感兴趣的:(Android,玩转Android)