我读过Android上, 游戏编程,他们都提供基本相同的解决方案来绘制游戏,即有专门的线程旋转这样不少教程:高效的Android渲染
public void run() {
while(true) {
if(!surfaceHolder.getSurface().isValid()) continue;
Canvas canvas = surfaceHolder.lockCanvas();
drawGame(canvas); /* do actual drawing here */
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
现在我想知道,这不就是浪费了?假设我有一个非常简单的图形游戏,所以drawGame中的实际时间很少; 然后我会继续绘制相同的东西,从其他线程窃取cpu; 一种可能性可以跳过图纸和睡眠有点在游戏状态并没有改变, ,我可以通过有状态更新线程mantaining合适的状态标志检查。 但也许还有其他选择。例如,无法与渲染同步, ,以便我不经常发布更新?或者我错过了什么,这正是lockCanvas所做的, 它是否阻止并且在适当的时候没有烧毁cpu?
在此先感谢
L.