我想知道我应该在何时何地打开/关闭 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();
}
....
}
但是我在哪里可以再次关闭连接呢?
最佳答案
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;
}
关于android - 应如何在 AsyncTaskLoader 内处理 SQLiteDatabase 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546442/