存在一些模糊的地方
来源: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回答
-
谢谢您的提问,
1)dueTime是callback预计执行时间,真正的执行时间是dueTime之后最近的vsync
2)timestampNanos是当前vsync信号的时间戳
3)choreographer是跟ViewRootImpl一个线程,不一定是主线程
4)对于一个ViewRootImpl来说,一个vsync周期最多只会触发一次traversal绘制。假如有多个ViewRootImpl都在同一个线程,就会共用一个Choreographer,post多个callback也是可能的。
00
相似问题