在安卓系统上,我能在不看屏幕的情况下检测到屏幕故障吗?



我正在尝试使用systemace的输出来检测自动测试期间的滚动:我想尽早注意到它,而不必坐在那里观看。

我花了一些时间试图了解踪迹,并发现这本电子书非常有用:https://www.safaribooksonline.com/library/view/high-performance-android/9781491913994/ch04.html

最有希望的假设是检查VSYNC-sf是否在显示VSYNC-sf的手机上停止滴答。

在其他机器上,SurfaceFlinger似乎是由HW_SYNC_0或VSYNC(有时一个或两个VSYNC停止)启动的,但SurfaceFlinger似乎也与VsyncOn有关,有时似乎跟踪是否有活动缓冲区突出,有时是否有输入事件需要交付。令人困惑的是,有时输入事件是在半秒的暂停期间交付的,而没有表面flinger活动,没有应用程序绘图,甚至VSYNC和HW_VSYNC信号也决定暂停。

有人知道那里发生了什么吗?

我是否应该期望看到Surface Flinger总是忙碌-而不是在每个tick交替忙碌和空闲-并且总是与一个或另一个vsync对齐?

我有时也看到SurfaceFlinger花了比一个tick更长时间来完成它的处理-这是应用程序的错误,因为有一个非常复杂的显示,或者它只是因为一些队列不够空而发生的事情?

我宁愿错过一个可能的问题,也不愿声称发现了一个不存在的问题。

谢谢!

Testing Display Performance列出了如何使用dumpsys中的新framestats命令来获取此类信息。它会提供你错过了哪些帧的信息,以及你错过了多少帧。

同样值得注意的是,SurfaceFlinger并不总是忙碌的。只有当部分屏幕需要更新时,它才会激活。如果屏幕上没有任何东西需要更新,那么就不会发生新的渲染,因此,SurfaceFlinger应该是空闲的。

你可以通过Android Performance Patterns中的rendering Performance 101视频获得Android渲染管道的更大视图。

相关内容

最新更新