Google의 메모장 예에서 적어도 onDestroy()에는 데이터베이스를 닫지 않는 것으로 보입니다.데이터베이스를 닫는 것이 필수적입니까?
폐쇄 목적은 무엇이며, 실제로해야합니까? 열린 데이터베이스가 상당한 메모리를 차지합니까? 나는 onDestroy에서 그것을 닫으면 액티비티가 끝난 후에 액티브 스레드를 실행하려고하는 스레드가 있으면 취약점을 남기는 것으로 나타났습니다.
Google의 메모장 예에서 적어도 onDestroy()에는 데이터베이스를 닫지 않는 것으로 보입니다.데이터베이스를 닫는 것이 필수적입니까?
폐쇄 목적은 무엇이며, 실제로해야합니까? 열린 데이터베이스가 상당한 메모리를 차지합니까? 나는 onDestroy에서 그것을 닫으면 액티비티가 끝난 후에 액티브 스레드를 실행하려고하는 스레드가 있으면 취약점을 남기는 것으로 나타났습니다.
데이터베이스 연결을 닫지 않으면 시간이 지남에 따라 메모리 누수가 발생합니다.
메모장 예제는 startManagingCursor
을 사용하지만 명시 적으로 db 연결을 닫아야합니다. 메모장 예제를있는 그대로 실행하고 여러 노트를 연속적으로 편집하면 LogCat에서 경고 및 오류가 발생하기 시작합니다. (더 큰 애플리케이션에서, 당신은 또한 메모리 누수 탐지 경고를보고 시작합니다.) 당신은 onDestroy()
에 닫을 여전히 실행중인 비 UI 스레드에서 "취약점을 남긴다"고 언급
W/SQLiteCompiledSql( 302): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: INSERT INTO notes(body, title) VALUES(?, ?);
W/SQLiteCompiledSql( 302): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
W/SQLiteCompiledSql( 302): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
...
W/SQLiteCompiledSql( 302): at dalvik.system.NativeStart.main(Native Method)
E/Database( 302): close() was never explicitly called on database '/data/data/com.android.demo.notepad3/databases/data'
E/Database( 302): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/Database( 302): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1810)
...
E/Database( 302): at dalvik.system.NativeStart.main(Native Method)
. AsyncTask를 사용하는 경우 작업에서 getStatus
을 사용하여 이러한 스레드의 상태를 확인할 수 있습니다.
if (myAsyncTask.getStatus() == AsyncTask.Status.FINISHED){
mDbHelper.close();
}
는 그런 다음 AsyncTask
의 onPostExecute
방법에서 연결을 닫습니다.
도움이 되길 ...
닫아야합니다.
메모장 예제는 Activity
의 startManagingCursor을 사용해야합니다.
커서를 처리하지만 SQLiteDatabase 객체는 무엇입니까? – Tenfour04
내 대답이 받아 들여지지 않고 받아 들여지지 않았습니까? – Farray
나는 내 휴대폰에서 그것을 받아들이려고했다. 나는 안드로이드 브라우저에서이 사이트가 약간 버그가 있다고 생각한다. – Tenfour04