我想知道在AsyncTaskLoader中何时何地打开/关闭我的SQLiteDatabase连接。我不觉得我完全理解Loader的生命周期,所以我担心如果我不这样做,我可能会遇到一些内存泄漏/ 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();
}
....
}
但是我又在哪里关闭连接?
答案 0 :(得分:2)
best way可能需要复制CursorLoader.java
并修改loadInBackground()
方法以使用SQLiteDatabase
/* Runs on a worker thread */
@Override
public Cursor loadInBackground() {
Cursor cursor = // Your stuff goes here <..>
if (cursor != null) {
// Ensure the cursor window is filled
cursor.getCount();
registerContentObserver(cursor, mObserver);
}
return cursor;
}