android - 使用动态加载程序在没有 ListFragments 的 ViewPager 中加载 ListView 页面的模式?

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

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

  1. 为每个页面使用单独的加载器;或
  2. 使用单个加载程序检查哪些页面未加载并加载它们

问题是,用户可能想要快速浏览一堆页面,因此应该很容易“取消”加载出于性能原因不需要的页面。

另一方面,似乎有很多加载程序可能会产生开销。

编辑:我的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/

相关文章:

android - 从另一个 AsyncTask doInBackground() 启动 AsyncTask

android - 尽管使用弱引用内存泄漏

android - 指标元素之间的空间

android - onFling 不工作

java - 在应用程序中实现 BottomSheet

android - Android 10 的 BACK 新手势会触发 onKeyDown 吗?

android - 如何克服数据库锁定异常?

android - 带回调的通用 asyncTask(用于 Web 服务)

android - 选项卡布局中间选项卡滚动不流畅

Android ListView 和 CPU 负载