Viewpager和FragmentTransaction、Fragment生命周期的关系

viewpager页面切换和fragment的事务FragmentTransaction和fragment生命周期的关系

这里写图片描述

所有的所有一切都在图里。
所有的所有一切都在图里。
所有的所有一切都在图里。

重要的话说三遍。

当viewpager新建,第一次进入时===add===(onAttach—》onResume)

使用FragmentPagerAdapter做适配器时,当第一次进来viewpager时,viewpager会把符合OffscreenPageLimit原则的所有fragment进行创建,类似于FragmentTransaction的add,此时所有的这些符合OffscreenPageLimit原则的fragment的生命周期都会从onAttach——-一直走到———onResume。当viewpager左右切换时,那些第一次进入OffscreenPageLimit范围内的fragment的生命周期跟上面一样,走add。

OffscreenPageLimit范围内的显示/隐藏时===show/hide===(setUserVisibleHint(true)/setUserVisibleHint(false))

当OffscreenPageLimit范围内的fragment显示隐藏时,如同FragmentTransaction的show/hide,不走常规的生命周期,走setUserVisibleHint方法,还有onhidechange方法。

当非第一次进入/离开OffscreenPageLimit范围时===attach/detach===((onCreateView—–》onResume)/(onPause—-》onDestroyView))

非第一次的意思就是,当fragment曾经进入过OffscreenPageLimit范围内,后来又离开又进入时。

当viewpager被销毁时===remove===(—-》onDestroy—-onDetach)

只有当viewpager被销毁不存在时,fragment才会被从Viewpager中remove,即走fragment的ondestroy以及ondetach的生命周期方法。

总结

如上,我们发现viewpager和fragment是多么的相配呀,简直绝配。
我们也知道了viewpager页面切换与fragment 事务和生命周期的紧密的联系。
一个viewpager涉及到了所有的FragmentTransaction事务和所有的Fragment生命周期。简直就是一个精细完美结合的单元。以前从来没搞清楚过它的原理,所以一直没敢用过,现在搞清楚了,这下放心了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值