如果我的ViewPager
有一定数量的页面,那么使用Loader
框架为每个页面加载数据的最佳方法是什么?每个页面都包含一个带有自己的适配器实例的ListView。
问题是,用户可能想要快速浏览一堆页面,因此应该很容易“取消”加载因性能原因而不需要的页面。
另一方面,似乎可能会有很多装载机的开销。
编辑:我的Loader
实际上需要动态ID来表示他们正在加载的内容。我可能会在加载器ID上使用掩码,然后在加载器完成后调用destroyLoader()
。
答案 0 :(得分:1)
我会为每个Loader
使用单独的ListFragment
。如果您尝试从父Loader
管理片段'Activity
(特别是如果这些片段由ViewPager
持有),事情会很快变得混乱。 Fragment
应该被设计为可重用,并且不应该依赖于特定的Activity
才能正常运行。每个Activity
和每个Fragment
获得自己的LoaderManager
实例这一事实进一步证明了Android团队不希望开发人员为其Activity
加载数据Fragment
附上Loader
s。
我认为不会有太大的开销,因为您可能期望...... FragmentStatePagerAdapter
应该在组件的生命周期中保留其数据,并且仅在基础内容发生更改时重新查询。使用{{1}}可能是个好主意。