存在一些模糊的地方

来源:6-1 说说屏幕刷新的机制-1

oRo

2019-05-22

(1)callback的dueTime(执行时间)是指当前时间吗?
(2)onVsyn()中创建消息发送到chro的消息队列里,timestampNanos是指下一个vsyn的时间吗?
(3)doFrame()中log提示主线程做了太多事情,所以chro所在线程是主线程吗?
(4))mTraversalScheduled=false是在doTraversal执行的,就意味doTraversal()不执行,scheduleTraversals不执行chore.postcallback方法吗?这是不是意味着·traversal单链表中只会有一个待执行的callback?

写回答

1回答

风语

2019-05-23

谢谢您的提问,

1)dueTime是callback预计执行时间,真正的执行时间是dueTime之后最近的vsync

2)timestampNanos是当前vsync信号的时间戳

3)choreographer是跟ViewRootImpl一个线程,不一定是主线程

4)对于一个ViewRootImpl来说,一个vsync周期最多只会触发一次traversal绘制。假如有多个ViewRootImpl都在同一个线程,就会共用一个Choreographer,post多个callback也是可能的。


0
0

剖析Framework面试 冲击Android高级职位

一手助力冲刺Android高级职位,一手把握系统底层原理,理清面试思路,提升技术段位

1406 学习 · 187 问题

查看课程