美文网首页
重翻已生灰的Android书---屏幕刷新机制

重翻已生灰的Android书---屏幕刷新机制

作者: 就是这么简简单单 | 来源:发表于2019-08-18 19:51 被阅读0次

    可以先了解下重翻已生灰的Android书---View绘制流程及原理

    Android是16ms刷新一次屏幕,它是怎么刷新的??

    在ViewRootImpl ---> requestLayout()发起UI重绘 --> scheduleTraversals()


    image.png

    什么时候置为false??

    在mTraversalRunnable,这个Runnable线程是接收到Vsync信号,才会执行doTraversal()


    image.png

    Vsync主要的执行方法是在Choreographer中,FrameDisplayEventReceiver的onVsync方法


    image.png
    参数timestampNanos是Vsync信号的时间戳,这是用来计算耗时,也就是为什么会出现丢帧。
    image.png
    image.png

    丢帧的原因:主线程做耗时操作,根本原因是Vysnc信号的接收,和View的重绘,调用onDraw方法时机啥的都没关系。
    View调用onDraw方法,不会立即执行,必须要接收到Vysnc信号,每隔16ms刷新屏幕,即使View没有被重绘,还是会每隔16ms刷新,只不过刷新的都是旧的同一个数据。
    个人总结:屏幕刷新主要在Choreographer中调用的Vsync信号的接收。

    这篇文章写的很详细Android 屏幕刷新机制

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

    相关文章

      网友评论

          本文标题:重翻已生灰的Android书---屏幕刷新机制

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