2009-09-04 3 views
8

내 액티비티에서 (뒤로 버튼을 통해) 종료 할 때 앱에 크래시가 발생합니다. 지금까지 안드로이드 코드베이스에서 이런 일이 벌어지고 있고 내 것이 아니라고 말할 수있는 한, 나는 완전히 확신하지 못했습니다.내 활동을 종료 할 때 왜 충돌이 발생합니까?

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 

누구나 어떤 아이디어/권장 사항이 :

여기 ADB의 스택 트레이스이다?

답변

14

코드가 없으므로별로 도움이되지 않습니다. android.app.Activity.performStop (Activity.java:3575)에서 java.lang.NullPointerException이

난 그냥

 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; 
      } 
     } 
Activity.java

확인 : 정지에 의한

보고

모든 커서가 올바르게 해제 되었습니까? 이러한 상황시 내부에 무슨 일이 일어나고 있는지의

+0

나는 그들이 Activity에 의해 관리되어야한다고 생각한다. 나는 사용하고있는 유일한 커서에서 startManagingCursor()를 호출했다. 이걸 처리하면 안되나요? –

+0

문서에서 :이 방법을 통해 활동은 활동의 수명주기를 기반으로 주어진 Cursor의 라이프 사이클을 관리 할 수 ​​있습니다. 즉, 활동이 중지되면 주어진 Cursor에서 deactivate()를 자동으로 호출하고, 나중에 다시 시작할 때 requery()를 호출합니다. 활동이 파괴되면 관리되는 모든? 서가 자동으로 닫힙니다. –

+0

게시자가 게시 한 코드가 실제로 정확히 수행해야하는 것은 아닌가요? –

0

는, 커서는 null입니다. Cursor를 null로하지 마라.

+1

2 년 전 이미 정확히 말한 것이 무엇입니까? –

관련 문제