我想使用CursorLoaders
从数据库加载日期,但问题是我不想处理CursorAdapter,或者它决定我希望Cursor
原样。
这就是我做的事情
class MyClass implements LoaderCallbacks<Cursor> {
Cursor mCursor;
...
...
...
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
if (type == V_TYPE_PART) {
// load all parts
return new CursorLoader(getActivity(),
PartTableMetaData.CONTENT_URI,
PartTableMetaData.TABLE_COLUMNS, null, null,
PartTableMetaData._ID + " ASC");
}
return null;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
counterPartCursor = arg1;
//update the UI
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
mCursor= null;
}
}
现在这个工作正常。我的问题是我正在以正确的方式做到这一点?或者我应该在onLoaderReset
??
答案 0 :(得分:2)
不需要关闭游标。设置null将使事情正常工作,因为CursorLoader将负责关闭它。但我可以看到当前代码中的泄漏为
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
counterPartCursor = arg1;
//update the UI
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
mCursor= null;
}
你在counterPartCursor中持有引用并使mCursor为null !!!