android--Fragment应该注意到的一些注意点

这篇文章主要讲两点:
1、防止fragment重新加载,浪费用户流量或者影响用户体验。对于FragmentTransation的replace方法,官方的建议是如果上一个fragment是不保留的情况下可以使用。否则的话采用先add然后根据需求hide或者show,这样可以实现fragment缓存,另外一张情况就是和ViewPager联合使用,然后设置setOffscreenPageLimit()这个方法设置缓存的页面的大小。
2、第二个就是其它原因导致的fragment的宿主activity被销毁后重新创建导致的fragment重复的问题(比如:旋转屏幕,进入到后台太久被干掉)。解决方法:
在activity的onCreate方法中判断Bundle是否为Null,如果不为null,FragmentTransaction通过tag获取之前的fragment,然后根据项目需要来进行显示不同的fragment,最后可以看看我写的demo来测试一下。代码传送门:github
最后可以参考一下这个链接,个人觉得还是很不错的,遇到的坑基本都说了fragment系列讲解
补充:
commit():安排一个针对该事务的提交。提交并没有立刻发生,会安排到在主线程下次准备好的时候来执行。
commitNow():同步的提交这个事务。任何被添加的Fragment都将会被初始化,并将他们完全带入他们的生命周期状态。
使用commitNow()类似于先调用commit()方法,之后调通FragmentManager的
executePendingTransactions() 方法,但commitNow()比后者的这种操作更好,后者在尝试提交当前事务时会有副作用(具体的副作用是什么,API文档没有给出说明)。
使用commitNow()时不能进行添加回退栈的操作,如果使用 addToBackStack(String)将会抛出一个 IllegalStateException的异常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值