LoaderCallbacks<Cursor>
监听器来监听发生的更改。我的问题是,当使用onLoaderReset(Loader<Cursor> loader)
方法时,我想使与加载器关联的任何数据失效并释放它时,会出现问题。在所有示例中,该方法中都会进行以下调用:mAdapter.swapCursor(null);
。但问题在于,我不使用适配器中的游标数据,而是以其他方式在我的应用程序中使用它(例如,在onLoadFinished(Loader<Cursor> loader,Cursor data)
中直接从返回的游标中)。 @Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data.moveToFirst()) {
TOTAL_CARDS = data.getCount();
mView.createCards(TOTAL_CARDS);
} else {
TOTAL_CARDS = 0;
mView.createCards(TOTAL_CARDS);
}
}
这里对应的类似于 mAdapter.swapCursor
的操作是什么?
我对加载器并没有太多的经验,实际上我刚刚开始使用它们,如果有人有解决方案,我会很感激。谢谢!
编辑: 目前,我将 null 传递给加载器,它可以工作,像这样:
@Override
public void onLoaderReset(Loader<Cursor> loader) {
loader = null;
}
};
但这是正确的解决方案吗?
Cursor
引用。这也是你应该释放引用的主要原因。在onLoadFinished(Loader, Cursor)
/onLoaderReset(Loader)
方法返回后,你很可能无法再使用旧的游标。 - Rafael Winterhalter