首页 > 解决方案 > 何时在 ViewPage2 中进行片段准备工作

问题描述

我正在尝试将我的应用程序从旧版 ViewPager 迁移到 ViewPage2。而且我发现与ViewPager不同的是,ViewPager2不会在fragment不可见的时候调用fragment的onCreate()或者onCreateView。

例如,用户在 Fragment[N] 上,当使用 ViewPager 时,Fragment[N+1] 将在后台创建,我可以在那里做一些准备工作(例如开始获取数据,解码图像等)。

但是,当我尝试 ViewPager2 示例时,我发现只有在 Fragment[N+1] 对用户可见时才会调用这些片段生命周期回调。否则,只会在后台调用片段的构造函数(init 方法)。但是我需要初始化的视图对象来进行准备工作。那么,如何解决这个问题呢?或者如果我以错误的方式做事,请指出正确的方向。

非常感谢。

标签: androidandroid-viewpagerfragmentandroid-viewpager2

解决方案


您可以通过调整OffscreenPageLimit

https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2#setOffscreenPageLimit(int)

这将改变它以使 Fragments +/- X 数字Started表示当前数字的任一侧。

只有当前显示的 Fragment 才会进入Resumed状态。

由于 Viewpager2 只是 Fragments 的回收视图,因此它经过优化以尝试提高效率,并且在真正需要显示 Fragments 之前不创建它们。


推荐阅读