"Algo mal aquí, no esperaba que el paquete se reanude" error en android Logcat

Tengo una aplicación de Android modelada después del ejemplo LunarLander de Google. Estoy depurando en un dispositivo real, ( Motorola Droid ) con Android 2.0 . Cuando la orientación cambia, el programa se bloquea en una NullPointerException . Logcat de justo antes del accidente:

 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 

La primera línea que me preocupa es "Something wrong here" en 24:38.620 . No tengo ni idea de lo que significa, pero creo que es debido a mí no reaccionar correctamente al cambio de pantalla.

A continuación obtengo un mensaje de depuración que me surfaceChanged() desde mi propio método surfaceChanged() sobre las nuevas dimensiones de la superficie.

Entonces imprimo el mensaje de la depuración sobre si las moscas eran null . flies es el campo que finalmente causa la NullPointerException . Se creó una vez, y nunca se escribió de nuevo para el resto del programa. Sé que no fue nulo antes del accidente, porque fue leído varias veces.

¿Alguien tiene una pista de cómo mi variable miembro privado llegó a ser nulo sólo por estas pistas?

Yo incluiría código, pero hay mucho de él y no sé qué sería relevante.

Los cambios de orientación en Android afectan al estado. Básicamente, su actividad es destruida y recreada. Por lo tanto, debe saber qué eventos de ciclo de vida de Android se llamarán y cómo guardar el estado.

También debe tener cuidado con las instancias static y cómo afecta a este ciclo de vida.

Aquí hay una entrada en el blog explicando algo de esto.

Lo arreglé agregando estas dos líneas a la etiqueta de actividad en mi archivo de manifiesto

 android:configChanges="keyboardHidden|orientation" android:screenOrientation="landscape" 

Esto dice que mi aplicación se encargará de los cambios de teclado y orientación por su cuenta (por no hacer nada) y prefiere correr en el paisaje todo el tiempo.

  • Viewflipper Receptor no registró error mientras cambio de orientación en 2.1 y 2.2
  • Android: deshabilita las rotaciones de 90 °, pero permite rotaciones de 180 °
  • Cómo configurar la orientación de la cámara Android correctamente?
  • Rotación inexplicable de la cámara Android en la captura de algunos dispositivos (no en EXIF)
  • Sólo en la aplicación Android
  • Manera correcta de manejar un cambio de orientación en Android
  • Android: configuración forzosa restablecida en los cambios de orientación
  • Forzar el modo de orientación "retrato"
  • Bloqueo de orientación de la pantalla
  • Cómo utilizar ExifInterface con una secuencia o un URI
  • Cambiar la orientación del dispositivo Android desde la línea de comandos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.