FragmentPagerAdapter与FragmentStatePagerAdapter的区别


简介

FragmentPagerAdapter和FragmentStatePagerAdapter是两种不同的类,用于在Android应用程序中实现PagerAdapter。当使用Android的ViewPager时,会用到这种页面适配器。这些页面适配器负责管理在ViewPager中显示的每个页面的生命周期。这两个适配器的共同点是它们都是PageAdapter类的子类。在本文中,我们将了解FragmentPagerAdapter和FragmentStatePagerAdapter的区别。

什么是Android中的适配器?

Android适配器是View和底层数据之间重要的桥梁,它有助于填充View。适配器的作用是从数据源(例如数组或数据库)获取数据,并将每个项目转换为在Activity中显示的结果视图。它充当View和数据集之间的桥梁,提供对数据项的访问。Android适配器本质上是一个用于为View提供数据的项目集合。适配器从数据源为View提供数据,并将数据集中的每个项目映射到一个View对象,例如TextView、ImageView或ListView。适配器充当数据源和View之间的中介,它负责确定将在View中显示哪些数据以及如何格式化这些数据。

在Android应用程序中,适配器用于不同类型的视图,例如ListView、RecyclerView、底部导航视图、TabLayout等等。任何具有类似重复格式内容的视图都可以借助适配器来处理。适配器会将内容设置为要在该视图中显示的每个内容。有不同类型的适配器用于不同类型的视图。在本文中,我们将了解Android应用程序中的FragmentPagerAdapter和FragmentStatePagerAdapter。

什么是Android中的FragmentPagerAdapter?

FragmentPagerAdapter是PagerAdapter的一种实现,它使用Fragment来管理每个页面。它将每个页面表示为一个Fragment,该Fragment保留在内存中,尽管如果用户导航离开页面,它可能会被暂停或停止。当需要分页浏览少量通常更静态的Fragment时,例如一组选项卡,这非常有用。用户访问的每个页面的Fragment都将保存在内存中,但其视图层次结构在不可见时可能会被销毁。由于Fragment实例可以保留任意数量的状态,这可能会导致使用大量的内存。对于大量页面,请考虑使用FragmentStatePagerAdapter。

什么是Android中的FragmentStatePagerAdapter?

另一方面,FragmentStatePagerAdapter会在Fragment对用户不可见时销毁它们。当您有大量Fragment或与Fragment关联的数据是动态的并且可能会随时间变化时,这非常有用。FragmentStatePagerAdapter是一个Android组件,允许您轻松地在Android应用程序中创建滑动选项卡。它的工作原理是为选项卡中的每个页面创建一个Fragment,然后利用ViewPager来管理这些Fragment。这允许轻松地在应用程序的不同页面之间导航,并在每个页面之间平滑过渡。

FragmentPagerAdapter和FragmentStatePagerAdapter的区别

FragmentPagerAdapter

FragmentStatePagerAdapter

FragmentPagerAdapter将所有Fragment实例保存在内存中。

FragmentStatePagerAdapter将当前Fragment实例保存在内存中,并将其他Fragment实例的状态保存到磁盘。

FragmentPagerAdapter使用更多内存。

与FragmentPagerAdapter相比,FragmentStatePagerAdapter使用更少的内存。因为它不会同时将所有Fragment保存在内存中。

FragmentPagerAdapter的滚动性能低于FragmentStatePagerAdapter。

FragmentPagerAdapter的滚动性能低于FragmentStatePagerAdapter。

FragmentPagerAdapter适用于少量页面。

FragmentStatePagerAdapter适用于大量页面。

结论

总之,“FragmentPagerAdapter”在您需要始终将少量Fragment(即页面)保存在内存中以提高性能时是一个不错的选择,而“FragmentStatePagerAdapter”在您有大量Fragment(即页面)并希望优化内存使用和滚动性能,或者与Fragment关联的数据可能会随时间变化时是更好的选择。

更新于:2023年5月8日

670 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告