Fragmentation icon indicating copy to clipboard operation
Fragmentation copied to clipboard

大佬有考虑兼容下ViewPager的setMaxLifecycle吗

Open Ubitar opened this issue 4 years ago • 1 comments

我看到Fragmentation中是通过getUserVisibleHint判断是否可见的,但是ViewPager1最新版和ViewPager2是通过setMaxLifecycle控制fragment可见性的。 目前我测试了下,ViewPager2中放置了Fragment,一打开会把ViewPager上所有的supportVisible()都调用了,而不是滑倒那一页才调用。旧版的ViewPager使用getUserVisibleHint判断方式,则不会有这个问题,滑动到那一页才会调用其supportVisible()。 不知道有没有大佬有没有高招兼容下。

Ubitar avatar May 05 '20 01:05 Ubitar

我试验的结果是: vp2, 不会走 setUserVisibleHint();比较onSupportVisible和onResume,onResume 触发的次数正常。 而 androidx的 vp1,对应 adapter 的构造参数,可以传递一个 behavior, @IntDef({BEHAVIOR_SET_USER_VISIBLE_HINT, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT}) private @interface Behavior { } 默认枚举值 BEHAVIOR_SET_USER_VISIBLE_HINT。其表现上,onSupportVisible 触发次数正常。 当传递BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,onResume 触发次数正常。

aa86799 avatar Apr 28 '22 10:04 aa86799