Sto riscontrando un arresto anomalo nella mia app quando esco (tramite il pulsante Indietro) dall'attività. Per quanto posso dire questo sta accadendo nel codice di Android e non nel mio, ma non ne sono completamente convinto.Perché ho un arresto anomalo all'uscita dalla mia attività?
Ecco lo stacktrace da 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
Qualcuno ha qualche idea/raccomandazioni?
Penso che dovrebbero essere gestiti dall'attività ... Ho chiamato startManagingCursor() sull'unico cursore che sto usando. Non dovrebbe questo gestirlo? –
Dalla documentazione: questo metodo consente all'attività di gestire il ciclo di vita del Cursore specificato per te in base al ciclo di vita dell'attività. Cioè, quando l'attività è ferma, chiamerà automaticamente deactivate() sul Cursore dato, e quando verrà riavviato in seguito chiamerà requery() per te. Quando l'attività viene distrutta, tutti i cursori gestiti verranno chiusi automaticamente. –
Non è esattamente quello che dovrebbe fare il codice che hai postato? –