2
我想知道我應該在AsyncTaskLoader中打開/關閉我的SQLiteDatabase連接。我不覺得我完全理解Loader的生命週期,所以如果我不這樣做,我恐怕會碰到一些內存泄漏/ NullPointerExceptions。我目前打開我的裝載程序的構造函數中的SQLiteDatabase:如何在AsyncTaskLoader中處理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();
}
....
}
但是我又在哪裏關閉連接?
所以我應該打開DB,搶我的光標,然後關閉數據庫都在loadInBackground() ? – 2012-03-03 14:40:29
根本不應該關閉SQLiteDatabase實例。 ContentProvider通常不會這樣做。如果您清楚地指出要銷燬所有使用SQLite數據庫的Activity和s資源,則應關閉數據庫,最重要的是關閉SQLiteOpenHelper **實例。 – Jens 2012-03-03 14:57:02
所以如果我使用SQLiteOpenHelper打開我的數據庫,它會自動將自己綁定到活動生命週期? – 2012-03-03 14:58:52