AsyncTaskLoaderでSQLiteDatabase接続をどこでいつ開く必要があるのか疑問に思っています。ローダーのライフサイクルを完全に理解しているとは思えないので、これを正しく行わないと、メモリリーク/NullPointerExceptionsが発生する可能性があります。現在、ローダーのコンストラクターでSQLiteDatabaseを開いています。
private class SQLiteCursorLoader extends AsyncTaskLoader<Cursor> {
private String _queryString;
private SQLiteDatabase _db;
...
public SQLiteCursorLoader(Context context, String queryString) {
super(context);
_queryString = queryString;
_db = MySQLiteOpenHelper.getWritableDatabase();
}
....
}
しかし、どこで接続を再度閉じるのですか?