在SurfaceView上渲染时出现动画故障

时间:2014-11-11 07:58:35

标签: android android-animation surfaceview

FPS约为60,但动画有时仍会出现故障。我做了线程分析,发现有时候三星S4 三星S3 lockCanvas()最多可能需要 20ms 。 它有什么具体原因吗?如何避免这样的故障。

1 个答案:

答案 0 :(得分:1)

有些设备,尤其是那些基于qcom CPU的设备,会通过lowering clocks积极管理电源,因此当您的手指未在触摸屏上主动移动时,您会看到60fps动画中的故障。

处理此问题的最佳方法是在必要时删除帧。 Grafika中的“记录GL应用程序”活动使用Choreographer的简单技巧来执行此操作。有关详细说明,请参阅图形架构文档中的this appendix

我还应该指出,SurfaceView表面上的Canvas渲染不是硬件加速的,随着像素数量的增加,渲染时间也会增加,这样你就更有可能错过了你的窗口。在某些方面,增加的CPU负载实际上可以使事情更顺畅 - 如果电源管理认为设备负载很重,它不会降低时钟 - 但它确实会使电池耗电更快。