唤醒屏幕后Android游戏崩溃

时间:2012-12-11 17:35:00

标签: android opengl-es android-activity lifecycle wakeup

我在Android上的游戏有问题:当我通过按下游戏活动中的电源按钮停用屏幕然后唤醒手机时,我有黑屏大约一分钟,然后应用程序崩溃。当我按下主页按钮暂停活动然后返回游戏时,一切看起来都很好。

这是我醒来后发现的关于我的应用程序的日志的唯一入口:

12-11 18:27:18.187: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:18.442: WARN/WindowManager(19653): App freeze timeout expired.
12-11 18:27:18.442: WARN/WindowManager(19653): Force clearing freeze: AppWindowToken{40f140c8 token=Token{412d25e8 ActivityRecord{40eb01a0 pl.priv.robertszuba/pl.priv.mallwar.game.GameActivity}}}
12-11 18:27:20.212: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:20.512: WARN/ActivityManager(19653): Activity idle timeout for ActivityRecord{40eb01a0 pl.priv.robertszuba/pl.priv.mallwar.game.GameActivity}
12-11 18:27:20.737: DEBUG/dalvikvm(19653): GC_EXPLICIT freed 1532K, 46% free 9743K/17735K, paused 13ms+7ms
12-11 18:27:22.237: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:24.262: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:26.337: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:28.457: WARN/InputConnectionWrapper.ICC(19863): Timed out waiting on IInputContextCallback
12-11 18:27:54.107: DEBUG/dalvikvm(20893): GC_CONCURRENT freed 1788K, 32% free 6141K/8967K, paused 3ms+5ms
12-11 18:28:06.597: DEBUG/dalvikvm(19653): GC_CONCURRENT freed 1832K, 45% free 9805K/17735K, paused 3ms+5ms

当我尝试调试我的应用时,我看到它已正确暂停,并且在唤醒后onResume被调用,onResume中的所有内容都已完成,但没有调用onSurffaceCreate在它之后。

1 个答案:

答案 0 :(得分:0)

当应用程序暂停时,OpenGL上下文在恢复时无效。您需要再次将数据,对象和纹理上载到驱动程序内存中。我在每个onPause / onResume上卸载并重新加载数据,它更安全。

此链接包含更多信息:http://developer.android.com/reference/android/opengl/GLSurfaceView.html

  

当活动暂停并恢复时,必须通知GLSurfaceView。 GLSurfaceView客户端需要在活动暂停时调用onPause(),并在活动恢复时调用onResume()。这些调用允许GLSurfaceView暂停和恢复渲染线程,并允许GLSurfaceView释放并重新创建OpenGL显示。

检查此repo以获取有关如何处理它的一些提示:https://github.com/TraxNet/ShadingZen(所有引擎资产都从Resource类扩展,并包含在应用暂停/恢复时加载和卸载数据的逻辑)。