我正在使用 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/