奥利奥上的比赛太慢了

时间:2018-01-10 13:30:43

标签: android game-loop android-8.0-oreo

我是Android的新手,我正在尝试编写一个简单的游戏。 这是我使用的主线程游戏循环(非常简单)(我不知道这是否是这个问题):

    @Override
    public void run(){
        [...]

        while(running) {
            startTime = System.nanoTime();
            canvas = null;

            //try locking the canvas for pixel editing
            //update and draw GameObjects
            [...]

            timeMillis = (System.nanoTime() - startTime) / 1000000;
            waitTime = targetTime-timeMillis;

            try{
                this.sleep(waitTime);
            }catch(Exception e){}

            totalTime += System.nanoTime()-startTime;
            frameCount++;
            if(frameCount == FPS){
                averageFPS = 1000/((totalTime/frameCount)/1000000);
                frameCount =0;
                totalTime = 0;

                System.out.println(averageFPS);  //Testing
            }
        }

现在......该项目使用Android 4 API,我正在OnePlus 5上测试此游戏。 当我将手机升级到Android 8时,FPS数量急剧下降。使用Android 6我可以达到62 FPS,现在(使用相同的代码)我不能超过13 FPS! 为什么?问题出在我的项目或Android中? 我能解决吗?

1 个答案:

答案 0 :(得分:0)

我通过删除main方法中的canvas.scale (...)解决了这个问题。 我无法解释为什么FPS在Android Oreo更新后才会下降。