Java 我是否在Android上做得不正确或不理解双缓冲?
我有一个函数Java 我是否在Android上做得不正确或不理解双缓冲?,java,android,doublebuffered,Java,Android,Doublebuffered,我有一个函数 @Override public void run() { while(running && (!eof)){ if(surfaceHolder.getSurface().isValid()){ Canvas canvas = surfaceHolder.lockCanvas(); paint(canvas); surfaceHolder.unlockCanvasAndP
@Override
public void run() {
while(running && (!eof)){
if(surfaceHolder.getSurface().isValid()){
Canvas canvas = surfaceHolder.lockCanvas();
paint(canvas);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
thread = null;
}
例如,其中paint(canvas)调用一系列其他函数来绘制图形和文本
canvas.drawText("Time="+myRecord.getMyTime(), 100, 100, paint);
我遇到的问题是,图形和文本,它们都应该不断变化,不会被删除,而是不断地画自己。难道我的整个画布不应该每次都被重新绘制吗?因为这就是双缓冲对lock()和unlock()的作用方式?我理解得不对吗?我该怎么做?在使用Canvas.drawColor()锁定Canvas()后,您需要自己清除画布 这也可能是相关的: 在unlockCanvas()之间,曲面的内容从未保留 和lockCanvas(),因此,表面积内的每个像素 必须是书面的。这条规则的唯一例外是当一个脏的 指定了矩形,在这种情况下,将显示非脏像素 保存
@mibollma解决了它!!谢谢不要在标题中标记[已解决]。这不是论坛什么的。张贴答案并接受它。或者让@mibollma将评论作为答案转发给你,这样你就可以接受了。