【问题标题】:When to do fragment preparation work in ViewPage2何时在 ViewPager2 中进行片段准备工作
【发布时间】:2020-03-23 09:06:04
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

    标签: android android-viewpager fragment android-viewpager2


    【解决方案1】:

    你可以通过调整OffscreenPageLimit来解决你的一些问题

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

    这将对其进行更改,以将 Fragments +/- X 编号变为 Started 状态,位于当前的任一侧。

    只有当前显示的 Fragment 被带到Resumed 状态。

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

    【讨论】:

    • 谢谢兄弟,这就像一个魅力。我记得旧版 ViewPager 也有这个方法,只是忘了在新的 ViewPager2 上使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多