使用动态加载器在没有ListFragments的ViewPager中加载ListView页面的模式?

时间:2012-08-19 01:34:25

标签: android android-asynctask android-viewpager android-loadermanager android-loader

如果我的ViewPager有一定数量的页面,那么使用Loader框架为每个页面加载数据的最佳方法是什么?每个页面都包含一个带有自己的适配器实例的ListView。

  1. 为每个页面使用单独的加载程序;或
  2. 使用单个加载程序检查未加载哪些页面并加载它们
  3. 问题是,用户可能想要快速浏览一堆页面,因此应该很容易“取消”加载因性能原因而不需要的页面。

    另一方面,似乎可能会有很多装载机的开销。

    编辑:我的Loader实际上需要动态ID来表示他们正在加载的内容。我可能会在加载器ID上使用掩码,然后在加载器完成后调用destroyLoader()

1 个答案:

答案 0 :(得分:1)

我会为每个Loader使用单独的ListFragment。如果您尝试从父Loader管理片段'Activity(特别是如果这些片段由ViewPager持有),事情会很快变得混乱。 Fragment应该被设计为可重用,并且不应该依赖于特定的Activity才能正常运行。每个Activity和每个Fragment获得自己的LoaderManager实例这一事实进一步证明了Android团队不希望开发人员为其Activity加载数据Fragment附上Loader s。

我认为不会有太大的开销,因为您可能期望...... FragmentStatePagerAdapter应该在组件的生命周期中保留其数据,并且仅在基础内容发生更改时重新查询。使用{{1}}可能是个好主意。