Fragment知识点不多,主要留意下回退栈和懒加载两点就差不多了,前提是其他点你也都掌握了,更多其他完整面试专题,请关注公众号获取。
1、简要介绍下Fragment
Fragment是Activity中用户界面的一个行为或者是一部分。主要是支持在大屏幕上动态和更为灵活的去组合或是交换UI组件,通过将Activity的布局分割成若干个Fragment,可以在运行时编辑Activity的呈现,并且那些变化会被保存在由Activity管理的后台栈里面。
是Android 3.0(API 11)提出的,为兼容低版本,v4包中也开发了一套Fragment API,现已移到androidx维护。
2、Fragment生命周期
Fragment比Activity多了几个生命周期的回调方法
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对 于该方法的实现
3、如何获取 FragmentManger
4、Framgnet 之间的通信
5、FragmentPagerAdapter 和 FragmentStatePagerAdapter
fragmentPagerAdapter在destroyItem()的时候调用的是detach()方法,只是把UI进行了分离,并没有真正的移除fragment,所以只适用于页面较少的情况。而fragmentStatePagerAdapter在切换页面的时候调用的是remove()方法,是真正回收内存的,所以它适用于页面较多的情况。
6、startActivityForResult 之坑
7、数据保存和恢复
和Activity类似,Fragment也有onSaveInstanceState的方法,在此方法中进行保存数据,然后在onCreate或者onCreateView或者onActivityCreated进行恢复都可以。
8、Fragment两种添加方式
9、FragmentTransaction常用方法
10、Fragment回退栈
Activity有任务栈,用户通过startActivity将Activity加入栈,点击返回按钮将Activity出栈。Fragment也有类似的栈,称为回退栈(Back Stack),回退栈是由FragmentManager管理的。默认情况下,Fragment事务是不会加入回退栈的,如果想将Fragment事务加入回退栈,则可以加入addToBackStack("")。如果没有加入回退栈,则用户点击返回按钮会直接将Activity出栈;如果加入了回退栈,则用户点击返回按钮会回滚Fragment事务。
11、后台运行缺陷
你的应用由FragmentA切换到FragmentB,被置于后台(例如用户点击了home),长时间后你会发现当你再次通过home打开时,上面FragmentA与FragmentB叠加在一起,或者横竖屏切换时,解决办法是只有在savedInstanceState==null时,才进行创建Fragment实例,通过检查onCreate的参数Bundle savedInstanceState就可以判断,当前是否发生Activity的重新创建。
12,ViewPager + Fragment懒加载实现
假如ViewPager的每一个Fragment都需要通过网络拉取数据加载,而ViewPager是默认加载前两项的,并且只要Activity执行了onResume(), 所有ViewPager中的Fragment都会执行onResume(),所以在很容易造成网络丢包或者网络堵塞等问题,所以Fragment使用懒加载机制,只有当Fragment真正对用户可见时,才进行网络请求。
实现方式是在setUserVisibleHint(boolean isVisibleToUser) 方法中进行判断是否对用户可见,并且保证UI已经初始化onViewCreated(),才开始拉取数据。
详情参考Fragment懒加载
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有