SurfaceView糟糕的表现

时间:2017-09-21 19:07:15

标签: android multithreading performance drawing surfaceview

所以我基本上创建了一个我希望将来用于其他项目的2D物理引擎。 这里唯一的问题是我的Surface View的性能。 我每秒获得60次逻辑更新,但无论我做什么,每秒只有6帧。 如果我在计算线程中调用draw()方法,我得到6 fps。 如果我创建一个只绘制的全新线程,在循环中没有任何延迟

    @Override
public void run() {
    while(running) {
        if(holder.getSurface().isValid()) {

            canvas = holder.lockCanvas();

            canvas.drawColor(Color.DKGRAY);
            for (GameObject object : objects) {object.draw(canvas);}

            holder.unlockCanvasAndPost(canvas);
        }
        gs.totalFrames++;
    }
}

(gs = Game Surface)我得到6 fps。我的游戏对象的draw()函数非常简单:

public void draw(Canvas canvas) {
    canvas.drawCircle((float) x, (float) y, 10, paint);
}

为什么表现如此糟糕? (我只有5个游戏对象,所以5个圈子,这根本不应该是性能问题!) 我也尝试过延迟发布的可运行的帖子,但这也很糟糕。 从线程调用GameSurface中的draw()函数而不是直接在其中绘图,并没有改变任何东西。微小的延迟也没有改善它。

我是否以某种不应该使用的方式使用SurfaceView? 有什么问题?

0 个答案:

没有答案