Fragmentation
Fragmentation copied to clipboard
大佬有考虑兼容下ViewPager的setMaxLifecycle吗
我看到Fragmentation
中是通过getUserVisibleHint
判断是否可见的,但是ViewPager1
最新版和ViewPager2
是通过setMaxLifecycle
控制fragment可见性的。
目前我测试了下,ViewPager2
中放置了Fragment
,一打开会把ViewPager
上所有的supportVisible()
都调用了,而不是滑倒那一页才调用。旧版的ViewPager
使用getUserVisibleHint判断方式,则不会有这个问题,滑动到那一页才会调用其supportVisible()
。
不知道有没有大佬有没有高招兼容下。
我试验的结果是:
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 触发次数正常。