我有一个glsurfaceview渲染器,其中包含一些代码,允许我在按下主页按钮后重新开始并再次输入游戏,并且工作正常,但如果我使用返回按钮关闭游戏,我再次尝试进入游戏,它崩溃并关闭。 我已经尝试在OnDestroy上编写完成()但不起作用。 当我按下返回按钮时,我已经检查过onDestroy()执行它。 在onSurfaceCreated我有函数加载纹理和设置顶点来绘制这些纹理,但是,我不明白会发生什么
编辑:
这是我第二次启动游戏后的日志,已经关闭之前
05-08 20:30:41.069: I/GLThread(6272): noticed surfaceView surface lost tid=12
05-08 20:30:41.069: I/GLThread(6272): onResume tid=12
05-08 20:30:41.169: I/GLThread(6272): noticed surfaceView surface acquired tid=12
05-08 20:30:41.169: W/EglHelper(6272): start() tid=12
05-08 20:30:41.219: W/EglHelper(6272): createContext com.google.android.gles_jni.EGLContextImpl@4056d398 tid=12
05-08 20:30:41.219: I/GLThread(6272): noticing that we want render notification tid=12
05-08 20:30:41.219: W/GLThread(6272): egl createSurface
05-08 20:30:41.219: W/EglHelper(6272): createSurface() tid=12
05-08 20:30:41.219: W/GLThread(6272): onSurfaceCreated
05-08 20:30:41.219: W/GLThread(6272): onSurfaceChanged(480, 320)
05-08 20:30:41.379: W/EglHelper(6272): destroySurface() tid=12
05-08 20:30:41.389: W/EglHelper(6272): finish() tid=12
05-08 20:30:41.389: W/dalvikvm(6272): threadid=9: thread exiting with uncaught exception (group=0x40018578)
05-08 20:30:41.389: E/AndroidRuntime(6272): FATAL EXCEPTION: GLThread 12
05-08 20:30:41.389: E/AndroidRuntime(6272): java.lang.NullPointerException
05-08 20:30:41.389: E/AndroidRuntime(6272): at glfg.gl.render.setverticesSquare(render.java:180)
05-08 20:30:41.389: E/AndroidRuntime(6272): at glfg.gl.render.onSurfaceChanged(render.java:475)
05-08 20:30:41.389: E/AndroidRuntime(6272): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1381)
05-08 20:30:41.389: E/AndroidRuntime(6272): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1138)
05-08 20:30:41.399: I/GLThread(6272): onPause tid=12
如果我杀了这个过程,我可以再次输入没有问题,但是如果我退出返回按钮,当我再次尝试启动它时会崩溃,它应该会完全关闭应用程序,但似乎不是
答案 0 :(得分:1)
您的错误在这里:
05-08 20:30:41.389: E/AndroidRuntime(6272): java.lang.NullPointerException
05-08 20:30:41.389: E/AndroidRuntime(6272): at glfg.gl.render.setverticesSquare(render.java:180)
在第180行的glfg.gl.render.setverticesSquare中。这是您的代码的一部分吗?我会查看该行并查看哪些对象可以为null,或者最好使用断点来检查它。