2011-01-09 4 views
2

나는 SQLiteDatabase 인스턴스를 만들고 getReadableDatabase() 또는 getWritableDatabase()을 호출하고 그런 식으로 데이터를 조작하지만 나는 결코 db.close()을 통해 데이터베이스를 닫지 않습니다. 그것을 닫지 않는 것이 나쁘지 않습니까? 내 onStop() 또는 onDestroy() 메쏘드에 db.close()을 추가하려고 시도했지만 강제로 닫습니다.안드로이드 sqlite 연결을 열어두고

답변

5

가능한 한 늦게 연결을여십시오. 가능한 한 빨리 닫으십시오. "finally"블록에서 닫아서 닫히는 지 확인하십시오.

그리고 일반적으로 리소스를 가져 오는 순서와 반대 순서로 처리하십시오.

+0

감사합니다, 주님! :) – mlvljr

+0

로거 프로그램이 있는데 데이터베이스를 너무 자주 열고 닫는 것이 합당한 지 궁금합니다 (예 : GPS를 기록 할 때마다 초당). 또한, (sqlcipher)를 사용하고있는 변종은 수천 개의 열림마다 열리는 크래시처럼 보이고 앱 시작 당 한 번만 열면 해결 방법이 될 것입니다. (이것은 서비스 중입니다, btw) – Michael

2

기본적으로 추가 커서를 열어 응용 프로그램을 확장하고 있습니다. 가장 좋은 방법은 연결을 끊는 것입니다.

나는 당신이 그것을하지 않으면 많은 예외가 발생한다는 것을 알아 차렸다.

+2

데이터베이스를 닫는 것이 적절한 경우는 어디입니까? – semajhan

+1

@semajhan 나는 보통 Activity의 OnPause() 메소드를 닫는다. – GSree

0

데이터베이스 연결을 닫지 않으면 시간이 지남에 따라 메모리 누수가 발생합니다. startManagingCursor를 사용할 수 있지만 이와 함께 db 연결을 닫아야합니다. 그런데 onStop() 또는 onDestroy() 메서드에서 db 연결을 닫는 동안 어떤 유형의 오류 또는 예외가 발생하는지