грешка след затваряне на приложението

имам glsurfaceview renderer с някакъв код, който ми позволява да възобновя, след като натисна бутона за начало и вляза отново в играта, и това работи добре, но ако затворя играта с бутона за връщане и опитам да вляза отново в играта, тя се срива и затворете. Опитах се да напиша finish() на 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

ако убия процеса, мога да вляза отново без проблеми, но ако изляза с бутона за връщане, той се срива, когато се опитам да го стартирам отново, предполага се, че приложението ще бъде затворено напълно, но изглежда, че не


person Jose    schedule 09.05.2012    source източник
comment
Никой друг също няма да разбере какво може да се случи, ако не включите дъмпа на стека от вашия системен журнал. От друга страна, ако първо го разгледате, може да разберете проблема - но ако не, редактирайте публикацията си, за да я включите, така че някой да помогне.   -  person mah    schedule 09.05.2012


Отговори (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. Това част от вашия код ли е? Бих погледнал този ред и видял какви обекти могат да бъдат нулеви или за предпочитане да използвам точки на прекъсване, за да го проверя.

person Tim    schedule 09.05.2012
comment
es render.setverticesSquare се извиква в onSurfaceChanged, но няма нищо, което може да причини грешката, няма nullreferences, защото, когато onSurfaceChanged първо задам всички стойности на нула, след това извикам функциите, които задават vertexbuffers и текстури, всичко това за can възобновяване на играта при натискане на началния бутон - person Jose; 09.05.2012
comment
видях много добре реда 180 и видях коя беше грешката, имаше условно условие, което ако е невярно, инициализира някои масиви, след което се променя на истина, имам променливата, оценена в условния, деклариран като: public static boolean Conditional = невярно; така че предполагам, че статичните променливи запазват своите стойности, въпреки че са затворили приложението - person Jose; 09.05.2012