当我从模拟器中的另一个应用程序返回时(即按下电话按钮,然后返回),我的整个游戏速度变慢。帧速率下降一半 - 将其变成污泥。
除了(仅)视图是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中没有出现红色问题。我很困惑 - 任何帮助都非常感激。
干杯, 罗宾。
答案 0 :(得分:0)
我找到了同样的解决方案,它适用于我,虽然我认为你不需要if stament也不需要_thread = null;
有一个我无法使其工作的解决方案,你可以在这里与我/你的方式一起看:Android crash when app is closed and reopened