我在尝试使用 SurfaceView 时遇到了一个奇怪的问题。像这个一样,它可以工作,但它会在 2 帧之间闪烁*。另外,unlockCanvasAndPost 大约需要 30-50Ms,这正常吗?
在这种情况下,每次重绘所有内容都不是一个好主意,我认为每帧重绘 350 个点不是一个好主意。
*在两帧之间闪烁:假设我在 (X,X) 处每帧画一个点,X 是帧号。我会看到点 1,1 3,3 5,5 7,7 9,9 出现在每个受损帧上,点 2,2 4,4 6,6 8,8 出现在每对帧上。
这是绘制的代码:
Canvas C;
while(running)
{
synchronized (mSurfaceHolder)
{
DoCalc(); //Doesn't do anything special. changes vars X1 and Y1
C=mSurfaceHolder.lockCanvas();
aDraw(C); // Only contains canvas.drawRect(X1-1, Y1-1, X1+1,Y1+1, P);
mSurfaceHolder.unlockCanvasAndPost(C); //Why does it take so long?
}
try {Thread.sleep(500);} //Temporary delay.
catch (InterruptedException e) {}
}