FragmentPagerAdapter和FragmentStatePagerAdapter

FragmentPagerAdapter和FragmentStatePagerAdapter有什么区别?

.之间的区别是什么?FragmentPagerAdapterFragmentStatePagerAdapter?

关于FragmentPagerAdapter谷歌的指南说:

当有几个典型的静态片段需要分页时,这个版本的寻呼机最适合使用,例如一组制表符。用户访问的每个页面的片段都将保存在内存中,尽管当其视图层次结构不可见时可能会被销毁。这可能导致使用大量内存,因为片段实例可以保持任意数量的状态。对于较大的页面集,请考虑FragmentStatePagerAdapter.

还有关于FragmentStatePagerAdapter:

当有大量页面时,此版本的寻呼机更有用,更像是列表视图。当页面对用户不可见时,可能会销毁其整个片段,只保留该片段的保存状态。这使得寻呼机能够保持与每个访问页面相关联的内存比FragmentPagerAdapter在页面之间切换时,代价是潜在的更多开销。

所以我只有三个碎片。但它们都是单独的模块,具有大量的数据。

Fragment1处理一些数据(用户输入这些数据)并通过活动传递给Fragment2,这只是一个简单的ListFragmentFragment3也是ListFragment.

所以我的问题是:我应该使用哪个适配器?FragmentPagerAdapterFragmentStatePagerAdapter?


qq_遁去的一_1
浏览 1358回答 3
3回答

跃然一笑

就像医生说的,这样想吧。如果要像图书阅读器那样执行应用程序,则不希望同时将所有片段加载到内存中。你想装载和摧毁Fragments正如用户所读的那样。在这种情况下,您将使用FragmentStatePagerAdapter..如果您只是显示不包含大量数据的3个“选项卡”(如Bitmaps),那么FragmentPagerAdapter可能很适合你。同时,要记住ViewPager默认情况下,将3个片段加载到内存中。第一Adapter你说过可能会毁了View层次结构,并在需要时重新加载它,第二个Adapter只保存Fragment并且完全销毁它,如果用户返回到该页面,状态将被检索。

忽然笑

FragmentPagerAdapter将整个片段存储在内存中,如果使用大量的片段,则会增加内存开销。ViewPager.相反,它的兄弟姐妹,FragmentStatePagerAdapter只存储碎片的保存状态,并在所有碎片失去焦点时销毁它们。因此FragmentStatePagerAdapter当我们必须使用动态片段时,应该使用它,比如带有小部件的片段,因为它们的数据可以存储在savedInstanceState而且,即使有大量的片段,它也不会影响性能。相反,它的兄弟姐妹FragmentPagerAdapter应该在我们需要将整个片段存储在内存中时使用。当我说整个片段保存在内存中时,意味着它的实例不会被销毁,并且会造成内存开销。因此,建议使用FragmentPagerAdapter只有当碎片数量较少时ViewPager.如果碎片是静态的,那就更好了,因为它们不会有大量的对象,这些对象的实例将被存储。为了更详细,FragmentStatePagerAdapter:带着FragmentStatePagerAdapter,您不需要的片段就被销毁了。一个事务被提交到从您的活动的片段中完全删除该片段。FragmentManager.州FragmentStatePagerAdapter是因为它会拯救你的碎片Bundle从…savedInstanceState当用户向后导航时,将使用片段的状态恢复新的片段。FragmentPagerAdapter:通过比较FragmentPagerAdapter什么都不做,当碎片不再需要的时候。FragmentPagerAdapter打电话detach(Fragment)关于事务而不是remove(Fragment).此破坏是碎片的视图,但将碎片的实例保留在FragmentManager因此,在FragmentPagerAdapter永远不会被摧毁。

慕盖茨4494581

在文档或本页的答复中没有明确说明的是:FragmentPagerAdapter如果片段中的数据更改,则不会更新片段,因为它将片段保存在内存中。因此,即使要显示的片段数量有限,如果希望能够刷新片段(例如,重新运行查询以更新片段中的listView),也需要使用FragmentStatePagerAdapter。我在这里的全部观点是,碎片的数量以及它们是否相似,并不总是需要考虑的关键方面。您的片段是否是动态的也是关键。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android