android - 推迟由 Loader 管理的查询的最佳方法是什么?

标签 android

我正在使用 LoaderManager 来处理支持 ListView 的查询。它依赖于一些直到过程后期才知道的参数。目前我打电话

getSupportLoaderManager().initLoader(0, null, callback);

在 onCreate() 中。这将在参数全部已知之前立即创建加载程序并执行查询。为了处理这个问题,当并非所有参数都已知时,我在 onCreateLoader() 中有一个虚拟查询,并且在我的回调处理程序中有一个标志,用于检查 onLoadFinished() 中我们是否有合法查询。如果不是,我将忽略游标数据。当需要进行真正的查询时,我会调用

getSupportLoaderManager().restartLoader(0, null, callback);

并将我的标志设置为 true,以便 onLoadFinshed() 正确处理它。

我在上面做的事情看起来有点老套;有没有更好的办法?我最初尝试稍后调用 initLoader() ,当我第一次需要查询时,但是在方向改变时事情失败了,类似于 this question .

最佳答案

您可以简单地调用 restartLoader 而无需先调用 initLoader。只需从 onCreate 中删除 initLoader 调用,并在获得参数后运行 restartLoader,无需标志。

关于android - 推迟由 Loader 管理的查询的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10019972/

相关文章:

java - 如何检查 Android tabview 中打开了哪个选项卡

android - 关于这个 UI 实现的建议?

java - 如何从 Android 应用程序的 SD 卡解析 XML?

java - FileUriExposed 异常错误

android - SQLite Android 插入返回 -1

javascript - 回调、Promise 和事件的区别 JavaScript/React-Native <-> Java/Android

java - 使用 AIDL 在两个进程之间传输 Parcelable

android - 触摸屏和用户输入的功能

android - IntentService 在某些情况下无法运行

android - 将 RxJava 与 Room 一起使用时循环