Android Lollipop游戏冻结(5.0版)

时间:2015-01-28 12:21:49

标签: android multithreading android-animation android-5.0-lollipop glsurfaceview

我正在使用GLSurfaceview和OpenGL ES 1.1开发游戏。在我的游戏中,游戏区域(使用GLSurfaceview创建)在游戏启动时放大(放大动画)。

问题: 我发现在Android Lollipop(5.0版)上启动游戏后,游戏有时会在缩小状态下冻结。在我杀死游戏之前,放大动画无法启动,游戏仍处于缩小状态。 这款游戏适用于从1.6(Donut)到4.4.4(Kitkat)的所有Android版本。

在我的代码中,我在游戏中运行了两个线程。

  1. 游戏逻辑线程:用于更新用于动画的变量的线程
  2. 游戏渲染线程:用于渲染游戏区域的GLSurfaceview线程
  3. 在我的代码中,上面的线程在游戏启动时启动。游戏逻辑线程不断更新动画变量的值。 Game Render线程使用此变量来显示放大动画。

    启动游戏逻辑线程的代码:

    mHandler.removeCallbacks(GameLogic);
    
    mHandler.postAtFrontOfQueue(GameLogic);
    

    这里,mHandler是一个Handler类对象。

    从我的代码中,我了解到当游戏逻辑线程停止时可能会发生此问题。但我无法弄清楚游戏逻辑线程如何在Android Lollipop上停止,因为我没有通过代码暂停或恢复游戏逻辑线程。 提前谢谢。

    编辑: 动画代码

    Game Logic() {
                    if (anim_counter == 144) {
                        stop_animation();
                    } 
    
                    anim_counter += 2; // update animation counter 
    
                  }
    

0 个答案:

没有答案