Android:Fragment与导航栏的“懒加载”

本文深入探讨了Android中Fragment的生命周期,特别是在ViewPager中的表现。分析了FragmentPagerAdapter的工作原理,指出在ViewPager中切换页面时Fragment的生命周期变化。同时,文章介绍了懒加载在不同业务场景下的实现,包括仅首次加载、每次进入页面加载和需要更新UI的情况。最后,强调了ViewPager中四种不同的Fragment状态:当前页面、预加载页面、回收页面和未加载页面。
摘要由CSDN通过智能技术生成

2018
写在前面:这篇文章主要分析导航栏,也就是ViewPager+Fragment+FragmentPagerAdapter的懒加载模式,重点还是Fragment生命周期的应用。
如果对如何使用导航栏还不太了解,可以看看 底部导航栏标签切换的实现 这篇文章。


(一)Fragment生命周期

大家都知道 Fragment 是绑定 Activity 的,不过,很多人会忽视了它们的生命周期也是会一定程度上同步的。下面表格的场景是在 Activity 内部实例化 Fragment,Fragment 与 Activity 生命周期之间的关系。

Activity Fragment
onCreate() onAttach(), onCreateView(), onCreateView, onActivityCreate()
onStart() onStart()
onResume() onResume()
onPause() onPause()
onStop() onStop()
onDestroy() onDestroyView(), onDestroy(), onDetach()

大多数时候我们将实例化 Fragment 放在 Activity.onCreate() 中,如new一个实例对象。不难理解 Fragment 在Activity.onCreate()之后才开始一系列生命周期方法的调用。而其他方法执行顺序会是下面这样:

Activity.onStart()-->Fragment.onStart()
Activity.onResume()-->Fragment.onResume() 
Fragment.onPause()-->Activity.onPause()
Fragment.onStop()-->Activity.onStop()
Fragment.onDestroyView(),onDestroy(),onDetach()-->Activity.onDestroy()

Fragment 依赖于 Activity,故而,Fragment创建于Acivity之后,销毁于Acrivity之前。

ViewPager中Fragment的生命周期

结合 ViewPager 后,页面切换会有哪些生命周期方法的调用?

看过上一篇博文的朋友应该都比较清楚了,这里就再不厌其烦地给没看过的朋友讲解一下。

单独使用Fragment没什么好说的,调用的方法和上表一样,会和 Activity 同步。而结合 ViewPager 取决于选择哪一种适配器,现在大多数使用 FragmentPagerAdapter或者 FragmentPagerStateAdapter,两者的区别是到底会不会回收Fragment的内存。

前者只回收View,除非内存不足,否则不会销毁加载好的Fragment;后者为达到节省内存的目的,对于不在当前页面左右两边的其他Page,将会销毁其Fragment,只保留最多三个页面在内存中。

针对 FragmentPagerAdapter 的测试

Fragment--> 代表的是第一个Fragment 的生命周期,Activity--> 代表与之关联的活动的生命周期:

// 程序启动,初始化活动
I/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值