Loader和onLoaderReset Android

Loader和onLoaderReset Android,第1张

概述我在我的应用程序中实现了一个Loader来查询数据库中的数据.我听到通过实现LoaderCallbacks< Cursor>发生的变化监听器.我的问题是当我的数据更改时使用onLoaderReset(Loader< Cursor> loader)方法,并且我想使与加载程序相关联的任何数据无效.在所有示例中,在此方法中有以下调用: mAdapter.swapCursor(NULL); 但是事情是我不 我在我的应用程序中实现了一个Loader来查询数据库中的数据.我听到通过实现LoaderCallbacks< Cursor>发生的变化监听器.我的问题是当我的数据更改时使用onLoaderreset(Loader< Cursor> loader)方法,并且我想使与加载程序相关联的任何数据无效.在所有示例中,在此方法中有以下调用:

mAdapter.swapCursor(NulL);

但是事情是我不使用光标在适配器中的数据,我以其他方式在我的应用程序中使用它.

(例如,直接从onLoadFinished(Loader< Cursor>加载器,Cursor数据)中的返回的游标)

@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传递给加载器,它的工作原理如下:

@OverrIDepublic voID onLoaderreset(Loader<Cursor> loader) {        loader = null;}};

但这是正确的解决方案吗?

解决方法 干
@OverrIDepublic voID onLoaderreset(Loader<Cursor> loader) {  loader = null;}

和做什么一样好在您的示例代码中,您只是将方法的本地引用归零.但是,返回方法调用后,此引用将始终被删除. (您可能需要阅读Is Java “pass-by-reference” or “pass-by-value”?以进一步讨论该主题.)

当您的加载程序的回调(通常是一个Activity或Fragment实例)被要求释放通过onLoadFinished(Loader,Cursor)获取的Cursor的所有引用时,onLoaderreset(Loader)方法被调用.基本上,这种方法要求您清理,因为装载程序将很快关闭它提供给您的光标.光标关闭后,您将无法再通过它检索数据.如果光标在关闭之后仍然会被使用(通常由您所提到的CursorAdapter),这将导致抛出异常.

类似地,onLoadFinished(Loader,Cursor)有一个隐式合同,要求在方法返回任何以前提供的Cursor对象不能再使用之后.相反,您必须通过作为方法参数提供的新游标来替换这些引用.相比之下,onLoaderreset(Loader)要求您完成相同的合同,但不提供替换,即您应该删除对以前检索的Cursor的所有引用.

在您的示例中,您不要让Cursor转义方法范围,而是立即读取数据.因此,没有必要删除通过onLoadFinished(Loader,Cursor)提供的Cursor对象的任何引用,因为没有.因此,执行onLoaderreset(Loader)以实现接口合同的空的实现将为您做好工作.

总结

以上是内存溢出为你收集整理的Loader和onLoaderReset Android全部内容,希望文章能够帮你解决Loader和onLoaderReset Android所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1132152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存