android handler.post函数,handler.postDelayed函数延时执行计时是否准确

滴滴面试的时候问到了这个问题,在巴掌神的demo帮助下,估计想考的就是这个吧,ps面试官不说答案逼都让他装了0.-,建议当面试官的朋友们最好准备一下答案比较好,在面试的时候给予被面试者帮助,面试不仅是一次求职体验,也是一次技术交流嘛,好了言归正传。

AAffA0nNPuCLAAAAAElFTkSuQmCC

当代码执行到postDelayed里面的run的时候 log 是 3150 毫秒;

该方法按照代码上示意应该是 上一个runnable执行之后再延时1毫秒执行,应该是4000+毫秒才对(之力说的计时是否准确应该是相对准确,因为执行代码需要花时间的),但是输出结果是3150毫秒,那就说明你设定的延时任务其实是不准确的,上图红色字标注说明了原因,下面将结合源码得出结论。

以下android framwork 源码均为api 25

我们看一下Handler类postDelayed方法调用了sendMessageDelayed方法的源码

AAffA0nNPuCLAAAAAElFTkSuQmCC

这里可以发现调用postDelayed的时候要执行延时方法的时间就已经被算好了

我们再来看到MessageQueue类的next方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值