闲谈
最近我在做一个小项目,在空余的时间想怎么样的学习效率是最快的,我在观察别人的同时也问了下自己,应该是和水平相似甚至比你高一点点的人学习效率是最快的,让那个人告诉我他的经验,自己就不用折腾了。
那假如每个人都这样想,感觉折腾那个人才是最蠢的。
是么。
折腾+互相分享才是最快的。
优化
原来切换fragment的代码
这种方法会每次replace会把生命周期全部执行一遍,如果在这些生命周期函数 里拉取数据的话,就会不断重复的加载刷新数据,不停的切换就会卡顿。
正确方法是fragment页面切换用add(),hide()和show()
问题
看起来很完美,实际体验也好了很多,但是只要你把这个app放到后台一段时间再操作就会出现fragment重叠现象。
原因
当系统内存不足,Fragment 的宿主 Activity 回收的时候,Fragment 的实例并没有随之被回收。Activity 被系统回收时,会主动调用 onSaveInstance() 方法来保存视图层(View Hierarchy),所以当 Activity 通过导航再次被重建时,之前被实例化过的 Fragment 依然会出现在 Activity 中,此时的 FragmentTransaction 中的相当于又再次 add 了 fragment 进去的,hide()和show()方法对之前保存的fragment已经失效了,所以就出现了重叠。
解决
重新onSaveInstanceState()就不会保存之前的 fragment state了
刷新数据的问题
|
|