个人网站对应网站网址,网站别人能打开我打不开,免费好用的服务器,石家庄人口1、刷新率介绍
我们先来理一下基本的概念#xff1a; 1、60 fps 的意思是说#xff0c;画面每秒更新 60 次 2、这 60 次更新#xff0c;是要均匀更新的#xff0c;不是说一会快#xff0c;一会慢#xff0c;那样视觉上也会觉得不流畅 3、每秒 60 次#xff0c;也就是 1…1、刷新率介绍
我们先来理一下基本的概念 1、60 fps 的意思是说画面每秒更新 60 次 2、这 60 次更新是要均匀更新的不是说一会快一会慢那样视觉上也会觉得不流畅 3、每秒 60 次也就是 1/60 ~ 16.67 ms 要更新一次4、一般来说屏幕的刷新率是硬件概念意思是1秒显示60张图片。如果屏幕分辨率为60HZ应用程序设置的刷新率要小于或等于60HZ。 2、图层介绍
2.1、绘制介绍 在Android渲染系统中⽣产者是应⽤进程消费者是SurfaceFlinger进程两个不同的进程数据的交换就涉及跨 进程通信⽽服务它们跨进程通信的组件是BufferQueue。BufferQueue就像是⼀个桥梁让原本孤⽴的应⽤进程 和SurfaceFlinger进程联系在⼀起有了BufferQueue这个桥梁图形显示系统基本架构可变成如下 Perfetto中SurfaceFlinger图层数据显示如下 代码环节中ViewRootImpl.java中的drawSoftware
函数中使用mSurface.lockCanvas(dirty)来获取SurfaceFlinger缓冲区 在surface.unlockCanvasAndPost(canvas);来释放缓冲区 2.2、卡顿是如何生成的呢 既然出现了生产者和消费者那么不是16.7ms类相关流程没有完成是否就会感受到卡顿?
参考 https://perfetto.dev/docs/data-sources/frametimeline 查看Perfetto log时绿色表示正常绘制其他颜色表示没按时绘制。 当APP绘制时长超过30帧后对应在Log中有如下打印。 当APP Choreographer中来不及绘制时是否就出现了卡顿呢
答案是不一定这个涉及到Buffer缓冲区设计 2.3、Triple Buffer
Buffer缓冲区设计具体得参考 https://blog.csdn.net/flc2762/article/details/122881577 3、参考文档网站
1、二十二Android应用框架之Activity · Android核心分析 · 看云
2、Android 基于 Choreographer 的渲染机制详解 · Android Performance