【问题标题】:Viewpager+FragmentpagerAdapet+Fragments+Listview = insanely slow appViewpager+FragmentpagerAdapet+Fragments+Listview = 非常慢的应用
【发布时间】:2013-12-28 05:35:17
【问题描述】:

我的布局中有一个 viewpager,该 viewpager 包含一组 10 个片段。每个片段都有一个列表视图,它是异步填充的。我目前正在使用 FragmentPagerAdapter 作为 viewpager 的适配器,并且填充列表视图的 API 调用在每个片段的 onCreateView 中完成。由于内存问题,滑动速度非常慢,应用程序会自行关闭。

如何像 Google Play 一样实现流畅和响应式(viewpager+listview)? 滑动流畅+列表项缓存好?

【问题讨论】:

  • 我想在这个问题中添加的另一件事是我可以在片段中实现 viewpager,如果是,那么如何实现??

标签: android android-fragments android-viewpager google-play viewpagerindicator


【解决方案1】:

有很多方法可以提高与ListView 集成的ViewPager 的性能。

首先,将PagerAdapterFragmentPagerAdapter 更改为FragmentStatePagerAdapter。不同之处在于您在寻呼机中加载了 10 个页面。如果你浏览了所有的经理只会把页面放在onStop() 因此它会保留空间。但是使用FragmentStatePagerAdapter 会破坏这些页面,但会使用onSaveInstanceState 方法保存它们的实例。因此,当您返回时,加载不会花费太多时间,而且您将节省内存。

通常FragmentPagerAdapter 用于 3 页或更少。

提高性能的第二种方法(但它会更快地消耗电池)是将此行添加到您的应用程序标签下的AndroidManifest.xml

android:hardwareAccelerated="true"

第三种方法是检测滑动手势。你可以通过实现onPageChangeListener然后在实现的方法onPageScrollStateChanged中检查页面是否为Idle然后添加ListView。否则,停止使用ListView 并滚动到下一页。这是一个更好的explanation这一点。

希望其中一些要点可以帮助您获得更好的性能。

【讨论】:

  • 嗨,如果我使用 onPageChangeListener ,那么每次我滑动到页面时,它都会进行 api 调用并填充它。我怎样才能缓存结果。我的 api 调用将返回一个 JSON。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多