我使用ViewPager& amp;显示搜索结果FragmentStatePageAdapter,每组结果都在自己的片段中。使用自定义AsyncTaskLoader加载数据。我想在去其他活动/背景并回来时保留滚动位置。
但是,在导航到另一个活动并返回时,Loader Managers调用加载器的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兼容性库。
谢谢!
答案 0 :(得分:0)
要检查的一小部分提示......当您initLoader
时,它可能无法拨打onStartLoading
,但肯定会致电onLoadFinished
(并提供旧结果)。
也许这发生在你身上?
还尝试阅读此主题: Why is onLoadFinished called again after fragment resumed?