2

我目前正在使用ViewPager带有FragmentStatePager适配器的 a,大约有 25 个不同的片段(和不同的relativelayouts)。当我滚动时,我通常会在滑动到某些视图时注意到明显的延迟,除非我声明viewpager.setoffscreenpagelimit(25). 有没有办法在viewpager不加载所有页面的情况下提高性能?

4

2 回答 2

3

使用开箱即用的 ViewPager 将加载最多三个片段/视图。留在那个号码。慢的不是 ViewPager,而是您在代码中执行的操作使其变慢。您的任何 Fragment 是否执行任何阻塞或消耗 CPU 的任务?例如加载位图?您是否有一些可以在 AsyncTask 中完成的解析?也许您可以将这些东西放在其他地方并将其保存到数据库中,然后当您加载 Frament 时,如果从数据库中读取,它将保持非常干净和高效。

于 2013-03-07T11:19:36.457 回答
1

您能否为您的问题添加更多细节?例如,您在每个页面中都在做什么?

您是否已更新到最新的Android 支持库

v4 支持库的更改:

  • 改进了 ViewPager 的交互行为。
  • 修复了可能导致 ViewPager 选择错误页面的错误。
  • 修复了在 ViewPager 布局期间使用 removeView() 方法。
  • 修复了 SearchViewCompat 使用后退按钮关闭搜索文本时无法清除的问题。此修复仅适用于主机 API 级别 14 及更高级别。

您必须始终记住 FragmentStatePagerAdapter 会自动保存页面并在不使用时将其删除。因此,如果您快速滑动,将会有很多页面加载/卸载。您可以尝试增加内存中加载的页面数量。

于 2013-03-07T11:20:53.837 回答