我使用 ViewPager 和 FragmentStatePageAdapter 显示搜索结果,每组结果都在自己的片段中。使用自定义 AsyncTaskLoader 加载数据。我想在进入其他活动/背景并返回时保留滚动位置。
然而,在导航到另一个活动并返回时,加载器管理器调用加载器的 onStartLoading() 并不必要地重新加载数据:
protected void onStartLoading() {
if (results.size() > 0) {
Log.d(TAG, "onStartLoading() - deliver result");
deliverResult(mResults);
}
if (takeContentChanged() || results.size() == 0) {
Log.d(TAG, "onStartLoading() - force load");
// Needed for custom loaders
forceLoad();
}
// Register observer...
}
这也意味着我无法恢复滚动位置(保存在片段的保存时)。有什么方法可以避免在片段的 onResume 上重新加载?我只在 onActivityCreated() 中调用 initLoader(),当从 backstack 中恢复片段时不会调用它。
我正在使用 v4 兼容性库。
谢谢!