2009-09-04 8 views
8

Tengo un bloqueo en mi aplicación cuando salgo de mi Actividad (a través del botón Atrás). Por lo que puedo decir, esto está sucediendo en la base de código de Android y no en la mía, pero no estoy completamente convencido de eso.¿Por qué me da un accidente al salir de mi actividad?

Aquí está la StackTrace de ADB:

AndroidRuntime E Uncaught handler: thread main exiting due to uncaught exception 
AndroidRuntime E java.lang.RuntimeException: Unable to stop activity {MyApp/MyApp.MainActivity}: java.lang.NullPointerException 
AndroidRuntime E  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3097) 
AndroidRuntime E  at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3159) 
AndroidRuntime E  at android.app.ActivityThread.access$2400(ActivityThread.java:112) 
AndroidRuntime E  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724) 
AndroidRuntime E  at android.os.Handler.dispatchMessage(Handler.java:99) 
AndroidRuntime E  at android.os.Looper.loop(Looper.java:123) 
AndroidRuntime E  at android.app.ActivityThread.main(ActivityThread.java:3948) 
AndroidRuntime E  at java.lang.reflect.Method.invokeNative(Native Method) 
AndroidRuntime E  at java.lang.reflect.Method.invoke(Method.java:521) 
AndroidRuntime E  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
AndroidRuntime E  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
AndroidRuntime E  at dalvik.system.NativeStart.main(Native Method) 
AndroidRuntime E Caused by: java.lang.NullPointerException 
AndroidRuntime E  at android.app.Activity.performStop(Activity.java:3575) 
AndroidRuntime E  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3092) 
AndroidRuntime E  ... 11 more 

Alguien tiene alguna idea y/o recomendaciones?

Respuesta

14

No se puede ayudar mucho, ya que no hay código. dejar de mirar a

Causado por: java.lang.NullPointerException en android.app.Activity.performStop (Activity.java:3575)

acabo de comprobar Activity.java

 final int N = mManagedCursors.size(); 
     for (int i=0; i<N; i++) { 
      ManagedCursor mc = mManagedCursors.get(i); 
      if (!mc.mReleased) { 
       mc.mCursor.deactivate(); // line 3575 
       mc.mReleased = true; 
      } 
     } 

¿Estás seguro de que todos los cursores se liberan correctamente?

+0

Creo que deberían ser gestionados por la Actividad ... He llamado a startManagingCursor() en el único Cursor que estoy usando. ¿No debería esto manejar eso? –

+0

De los documentos: Este método permite que la actividad se encargue de administrar el ciclo de vida del Cursor dado para usted en función del ciclo de vida de la actividad. Es decir, cuando se detiene la actividad, automáticamente se llamará deactivate() en el Cursor dado, y cuando se reinicie más tarde llamará a requery() por usted. Cuando se destruye la actividad, todos los cursores gestionados se cerrarán automáticamente. –

+0

¿No es eso exactamente lo que el código que publicaste debería estar haciendo? –

0

En su actividad antes de startManagingCursor método() se llama, el cursor es nulo. No dejes que el Cursor sea nulo.

+1

Entonces, ¿exactamente lo que ya se dijo, hace más de 2 años? –

Cuestiones relacionadas