在onResume之后返回到surfaceview会导致性能下降

时间:2010-11-04 06:07:52

标签: android

当我从模拟器中的另一个应用程序返回时(即按下电话按钮,然后返回),我的整个游戏速度变慢。帧速率下降一半 - 将其变成污泥。

除了(仅)视图是surfaceDestroyed(在重复调用join之后,与lander示例一样)之后我杀死的线程,所有内容仍然存在。我创建了一个新线程并附加它 - 游戏运行后,时尚。

     if (_thread.getState() == Thread.State.TERMINATED) 
     {
      _thread = null;
   _thread = new TutorialThread(getHolder(), this);
   _thread.setRunning(true);
   _thread.start();
  }
  else 
  {
   _thread.setRunning(true);
   _thread.start();
  }

这是在这个论坛上进行了一些轰炸和搜索之后,游戏在返回时崩溃了。游戏中的所有大对象(位图,声音等)都在主要活动中,所以我不希望它们被破坏或重新创建。音乐暂停onPause并重新启动onResume。这一切在真正的手机上运行得更加顺畅(htc欲望)但是我担心这种行为与1.6(模拟器为了广泛的兼容性而运行)或某些东西悬而未决有关。

LOGCAT - 很多SurfaceFlinger消息确实出现了(写入被阻止n ms)SurfaceFlinger(“executeScheduledBroadcasts跳过,客户端争用”)和SurfaceComposerClient发出关于“lock_layer”超时的消息。

此外,运行并跳回主页然后在htc和模拟器上运行应用程序(几次)最终会导致应用程序崩溃,但在Logcat中没有出现红色问题。我很困惑 - 任何帮助都非常感激。

干杯, 罗宾。

1 个答案:

答案 0 :(得分:0)

我找到了同样的解决方案,它适用于我,虽然我认为你不需要if stament也不需要_thread = null;

有一个我无法使其工作的解决方案,你可以在这里与我/你的方式一起看:Android crash when app is closed and reopened