Ich habe eine Android-App nach dem Vorbild LunarLander
Beispiel von Google. Ich debugge es auf einem echten Gerät, (Motorola Droid
) mit Android 2.0
. Wenn sich die Ausrichtung ändert, stürzt das Programm auf einem NullPointerException
ab. Logcat von kurz vor Absturz:"Etwas falsch hier, nicht erwartet, dass PACKAGE fortgesetzt werden" Fehler in android Logcat
02-01 00:24:27.956: DEBUG/nate(8358): Starting Game
02-01 00:24:36.878: DEBUG/dalvikvm(1086): GC freed 1788 objects/92256 bytes in 1389ms
02-01 00:24:38.542: INFO/WindowManager(1021): Setting rotation to 1, animFlags=0
02-01 00:24:38.558: INFO/ActivityManager(1021): Config changed: { scale=1.0 imsi=310/4 loc=en_US touch=3 keys=2/1/2 nav=2/2 orien=2 layout=34}
02-01 00:24:38.620: WARN/UsageStats(1021): Something wrong here, didnt expect org.nifong.leeder to be resumed
02-01 00:24:38.886: DEBUG/nate(8358): New Surface dimensions: 854x442
02-01 00:24:38.886: DEBUG/nate(8358): flies was null
Die erste Zeile, die mir Sorgen "Something wrong here"
bei 24:38.620
ist. Ich habe keine Ahnung was es bedeutet, aber ich denke es liegt daran das ich nicht richtig auf den Bildschirmwechsel reagiere.
Als nächstes bekomme ich eine Debug-Nachricht, die ich selbst aus meiner eigenen Methode surfaceChanged()
über die neuen Oberflächenmaße gedruckt habe.
Dann drucke ich Debug-Meldung darüber, ob Fliegen war null
. flies
ist das Feld, das schließlich die NullPointerException
verursacht. Es wurde einmal erstellt und für den Rest des Programms nie wieder geschrieben. Ich weiß, dass es vor dem Absturz nicht null war, weil es mehrmals gelesen wurde.
Hat jemand eine Ahnung, wie meine private Mitgliedervariable nur durch diese Hinweise null wurde?
Ich würde Code enthalten, aber es gibt eine Menge davon und ich weiß nicht, was relevant wäre.
Dies ist möglicherweise eine Lösung für Ihre App, abhängig von Ihrem Anwendungsfall. Meiner Meinung nach ist dies ein unhöfliches Verhalten, das den Benutzer in ein Nutzungsverhalten zwingt, das er vielleicht nicht mag ... – Janusz