LoaderManager.LoaderCallbacksを実装するListFragmentでデータベースリソースを開いたり閉じたりするのに最適な場所はどれですか?
を実装するリストフラグメントがありますLoaderManager.LoaderCallbacks<Cursor>
。ここで、ローダーを初期化し、ローダー(MyLoader)onActivityCreated
を返しました。onCreateLoader
MyLoaderクラスはデータベースリソースを開きます。その後、Cursorオブジェクトがに返され onLoadFinished
ます。カーソルがonLoadFinishedに戻る前にデータベースを閉じることができないため、ここで開いているデータベースを閉じることができます。
多くの人が、Activity onResumeでデータベースリソースを開き、onPauseで閉じるのが最善だと言いましたが、AsynctaskLoadersを使用する場合、データベースリソースを閉じる方法は?
次のエラーが発生しました、
close() was never explicitly called on database 'mydb'
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)