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将评论作为答案转发给你,这样你就可以接受了。