2012-03-06 2 views
1

활동이 일시 중지되면 데이터베이스를 닫는 것이 가장 좋습니다. 또는 활동 상태에 관계없이 데이터베이스를 열어 두어도 안전합니까?onPause()에서 데이터베이스 닫기

궁금한 점은 데이터베이스를 닫으면 onPause() 다시 열어보고 onResume()이 null 포인터 예외를 throw하고 이미 닫힌 커서에서 데이터베이스를 다시 쿼리하려고한다는 것입니다. . .

답변

3

onDestroy()에서 마감하는 것이 가장 좋은 방법입니다.

+0

그래, onPause()를 열어두면 물론 onDestroy()로 호출하지 않는 한 괜찮습니까? –

+0

정확합니다. onPause()는 Activity가 백그라운드에있을 때 호출됩니다. 그리고 onDestroy()는 Activity가 없어지기 전에 호출됩니다. 따라서 onDestroy()가 다음에 Activity가 표시 될 때까지는 onCreate()를 다시 호출해야합니다. – Thommy

0

데이터베이스를 닫지 않고 내 Application 클래스 구현의 onCreate에서 엽니 다.

onTerminate 메서드가 있지만 문서가 실행되지 않는다고 말하면 응용 프로그램이 종료 될 때를 알 수있는 실제 방법이 없습니다.

never close database 패턴과 관련하여 전혀 문제가 발생하지 않았습니다.

0

게시 할 수 있습니까? 나는 보통 onPause 메서드에서 데이터베이스를 닫고 onResume에서 엽니 다. 왜냐하면 나는 onDestroy가 항상 부르지는 않는다는 것을 읽었습니다. 그러나 귀하의 경우 커서가 닫히지 않은 상태에서 문제가 발생한다고 생각합니다. 그러나 나는 그것이 당신에게 logcat과 당신의 코드를 올리라고 요청하는 이유인지 확신하지 못합니다.

+0

다음은 onDestroy에 대한 토론입니다. http://stackoverflow.com/questions/8667019/android-activity-ondestroy-is-not-called-when-dalvik-kills-this-activity – Yury

+0

게시물을 편집하고 오류를 삽입하십시오. 귀하의 질문에. 다른 사용자에게 더 좋을 것입니다. – Yury

+0

그래, 여기 오류가 03-06 10 : 40 : 01.931 : E/AndroidRuntime (895) : java.lang.RuntimeException : 활동을 다시 시작할 수 없습니다. com.test.learnandroid/com.test.learnandroid.EditActivity} : java. lang.NullPointerException –

관련 문제