Java Android SurfaceView,绘制线程,无限循环锁定画布

Java Android SurfaceView,绘制线程,无限循环锁定画布,java,android,android-canvas,Java,Android,Android Canvas,我试图使用广泛使用的(根据谷歌)方法在单独的线程中创建画布,它使用如下线程 @Override public void run() { Canvas c; while (running) { c=null; try { c = mySurfaceHolder.lockCanvas(null); } .... 在这里,我使用无限循环调用lockCanvas()方法,但我感到困惑——有时lockCanvas

我试图使用广泛使用的(根据谷歌)方法在单独的线程中创建画布,它使用如下线程

@Override
public void run() {
    Canvas c;
    while (running) {
        c=null;
        try { 
            c = mySurfaceHolder.lockCanvas(null); 
        } ....
在这里,我使用无限循环调用lockCanvas()方法,但我感到困惑——有时lockCanvas()方法非常慢,再加上我有无限循环——有时我的性能非常差


请您提出建议,我如何避免这个性能问题,是否有其他在画布上绘制的方法

也许问题出在别处。在我自己的渲染代码中,我使用了一种非常类似的方法,甚至在循环的每个过程中都创建了一个新的画布引用和对象,但我获得了很好的帧速率。@npace评测显示lockCanvas()花费的时间最长。.嗯,我无法真正检查它是否对我来说是一样的,但可能lockCanvas需要很长时间才能完成,但它本身并不影响性能…实际上,我对lockCanvas()方法的“无限循环”有点困惑。。。我不确定-这真的是一个好方法吗?嗯,这是一个简单图形的公认方法。如果需要更好的性能,应该使用OpenGL而不是Canvas API。如果你愿意,你可以看看我用Canvas实现的一个简单的蛇游戏来比较你自己的代码-。虽然还没有用OpenGL上传任何东西。。。