如果我有一个包含一定数量页面的 ViewPager
,使用 Loader
框架为每个页面加载数据的最佳方式是什么?每个页面都包含一个带有自己的适配器实例的 ListView。
- 为每个页面使用单独的加载器;或
- 使用单个加载程序检查哪些页面未加载并加载它们
问题是,用户可能想要快速浏览一堆页面,因此应该很容易“取消”加载出于性能原因不需要的页面。
另一方面,似乎有很多加载程序可能会产生开销。
编辑:我的Loader
实际上需要有动态 ID 来表示它们正在加载的内容。我可能会在加载程序 ID 上使用掩码,然后在加载程序完成后调用 destroyLoader()
。
最佳答案
我会使用单独的 Loader
对于每个 ListFragment
.如果您尝试管理 fragment 的 Loader
,事情很快就会变得一团糟来自 parent 的 Activity
(特别是如果这些 fragment 被 ViewPager
持有)。 Fragment
s 应该是为重用而设计的,不应依赖于特定的 Activity
以便正常运行。每个 Activity
的事实每个 Fragment
得到自己的LoaderManager
实例进一步证明 Android 团队不希望开发人员拥有他们的 Activity
s 为其附件加载数据 Fragment
我认为开销不会像您预期的那么多... Loader
s 应该在整个组件的生命周期中保留它们的数据,并且仅当基础内容发生变化时才重新查询。使用 FragmentStatePagerAdapter
可能是个好主意也是。
关于android - 使用动态加载程序在没有 ListFragments 的 ViewPager 中加载 ListView 页面的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023568/