我的Android opengl应用程序在睡眠后崩溃了

时间:2011-10-23 15:29:45

标签: android opengl-es android-2.2-froyo

我知道这是我在从软件绘图切换到opengl es 1.0之前应该学到的东西,但是我一直无法找到关于这个主题的任何信息......

我的opengl应用程序在进入睡眠状态后崩溃,如果有一段时间没有被触摸......我想知道是不是因为我没有在它进入睡眠状态之前卸载纹理或顶点/颜色/纹理/索引缓冲区。我真的不确定如何做到这一点,或者即使它会有所帮助......有人可以指导我或者告诉我快速指导必须重新加载,销毁的规则等等吗?我对这一切感到很困惑......

我不知道它是否有用,但是我的主类扩展了GLSurfaceView并实现了“Renderer”,它加载了onScreenCreated中的所有纹理和缓冲区对象,并修复了onSurfaceChanged上的屏幕缩放。在主要活动(主要类链接在其中)覆盖onResume和onPause调用onResume和onPause openGL表面命令......

任何可能出错的线索都会非常有用......我的游戏引擎编码中途,但我担心像这样的故障只会暂停我当前和未来的项目。

我正在使用Froyo(android 2.2)和openGL ES 1.0。

错误从logcat打印出来:

  

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):致命异常:GLThread 26

     

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):java.lang.IllegalThreadStateException:线程已经启动。

     

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):at java.lang.Thread.start(Thread.java:1322)

     

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):at or.gl.m5.Screen.onSurfaceCreated(Screen.java:161)

     

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):在android.opengl.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:1317)

     

10-24 03:13:41.988:ERROR / AndroidRuntime(9888):在android.opengl.GLSurfaceView $ GLThread.run(GLSurfaceView.java:1116)

1 个答案:

答案 0 :(得分:2)

如果没有看到堆栈跟踪或者抛出什么样的异常,就很难说出来。但无论如何,我猜测它会崩溃,因为你必须在你的活动恢复后重新加载纹理。一旦您的视图转到背景,您之前创建的纹理将变为无效。