(我试图用关键字填充问题,以防其他人遇到这个问题 - 我找不到太多帮助。)
我在 Android 中有一个自定义视图,其中包含一个 LED 条形图,显示通过套接字通信接收到的级别。它基本上只是一个剪辑的图像。级别越高,图像被剪裁的越少。
当我更新关卡然后使视图无效时,某些设备似乎会“收集”多个更新并以块的形式呈现它们。屏幕明显犹豫了 1/10 秒,然后快速绘制多个帧,然后再次犹豫。看起来它不堪重负并掉帧。
但是,当更改屏幕上的另一个 UI 控件时,LED 条形图的绘制更加频繁和流畅。我在想 Android 试图通过“收集”多个失效然后一次完成所有这些来帮助我。也许通过操纵控件,我只是通过给它“更多工作”来“增加”我的帧速率,因此它在实际绘画之间的延迟更少。
与动画(平滑过渡)不同,我想尽快显示绝对最新值。无论如何,我的数据样本不超过 10-20fps。
是否有一种简单的方法可以在某些点“强制”绘制,或者这是视图如何工作的限制?我应该在 SurfaceView 中实现这个吗?(我还没有玩过......首先需要建议。)提前感谢您的建议。
(当天晚些时候……)
更新:我在文档中找到了一个页面,它确实建议将我的小部件实现为 SurfaceView 是要走的路:
http://developer.android.com/guide/topics/graphics/2d-graphics.html
(在那之后的一个小时……)
SurfaceView 对于我想做的事情来说似乎有点矫枉过正。最佳实践方法是“拥有”整个画布,但我已经开发了其余的控件和布局,并且它们运行良好。必须有可能用我所拥有的东西获得更好的性能,特别是因为与 UI 交互使重绘速度令人满意。