什么时候在 ViewPager2 中做片段准备工作

When to do fragment preparation work in ViewPage2

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

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

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

非常感谢。

您可以通过调整 OffscreenPageLimit

来解决您的一些问题

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

这会将其更改为将 Fragments +/- X 编号变为 Started 当前状态的任一侧。

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

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