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的异常。

你可能感兴趣的:(android,fragment)