2012-05-09 2 views
1

У меня есть средство просмотра 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 [email protected] 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

Никто не поймет, что может произойти, если вы не включили дамп стека из системного журнала. Опять же, если вы сначала изучите его, вы можете понять проблему, но если нет, отредактируйте свой пост, чтобы включить его, чтобы кто-то мог помочь. – mah

ответ

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) 

В glfg.gl.render.setverticesSquare в строке 180. Это часть вашего кода? Я бы посмотрел на эту строку и посмотрел, какие объекты могут быть пустыми, или предпочтительно использовать контрольные точки для ее проверки.

+0

ies render.setverticesSquare вызывается в onSurfaceChanged, но нет ничего, что могло бы вызвать ошибку, нет нулевых ссылок, потому что, когда onSurfaceChanged сначала устанавливает значения al в ноль, вызовите функции, которые устанавливают вершинные буферы и текстуры, все, что для может возобновить игру, когда нажата кнопка дома. – Jose

+0

Я очень хорошо видел линию 180, и я увидел, какая ошибка, была условная ошибка, если false, инициализируйте некоторые массивы, после чего изменится на true, у меня есть переменная, оцененная в условном объявлении как: public static boolean Conditional = false; , поэтому я полагаю, что статические переменные сохраняют свои значения, несмотря на закрытие приложения – Jose

Смежные вопросы