我正在使用 LoaderManager 来处理支持列表视图的查询。它依赖于一些直到过程后期才知道的参数。目前我打电话
getSupportLoaderManager().initLoader(0, null, callback);
在 onCreate() 中。这将在所有参数都知道之前立即创建加载程序并执行查询。为了处理这个问题,我在 onCreateLoader() 中有一个虚拟查询,当并非所有参数都知道时,我的回调处理程序中有一个标志,用于在 onLoadFinished() 中检查我们是否有合法查询。如果不是,我忽略游标数据。当需要进行真正的查询时,我会打电话给
getSupportLoaderManager().restartLoader(0, null, callback);
并将我的标志设置为 true,以便 onLoadFinshed() 正确处理它。
我在上面所做的似乎有点老套;有没有更好的办法?我最初试图稍后调用 initLoader(),当我第一次需要查询时,但是在方向更改时事情会失败,类似于这个问题。