什么时候在 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
来解决您的一些问题
这会将其更改为将 Fragments +/- X 编号变为 Started
当前状态的任一侧。
只有当前显示的Fragment会进入Resumed
状态。
由于 Viewpager2 只是 Fragments 的回收视图,它经过优化以尝试提高效率并且在真正需要显示之前不创建 Fragments。
我正在尝试将我的应用程序从旧版 ViewPager 迁移到 ViewPage2。而且我发现和ViewPager不同,ViewPager2在fragment不可见的时候不会调用fragment的onCreate()或者onCreateView
例如,用户在Fragment[N],当使用ViewPager时,Fragment[N+1]会在后台创建,我可以在那里做一些准备工作(例如开始获取数据,解码图像等) .
但是,当我尝试 ViewPager2 示例时,我发现只有当 Fragment[N+1] 对用户可见时才会调用这些片段生命周期回调。否则,只会在后台调用片段的构造函数(init 方法)。但是我需要初始化视图对象来进行准备工作。那么,如何解决这个问题呢?或者我做的不对,还请大家指出正确的方向
非常感谢。
您可以通过调整 OffscreenPageLimit
这会将其更改为将 Fragments +/- X 编号变为 Started
当前状态的任一侧。
只有当前显示的Fragment会进入Resumed
状态。
由于 Viewpager2 只是 Fragments 的回收视图,它经过优化以尝试提高效率并且在真正需要显示之前不创建 Fragments。