美文网首页
android - fragment

android - fragment

作者: lemonxian | 来源:发表于2017-01-05 17:25 被阅读0次

看了网上很多关于fragment的使用

在使用fragment的时候用到FragmentTransaction

主要就两种:一种Add  一种replace

网上很多人都说如果要保存fragment的数据的话,就用Add,然后show来控制,就可以复用fragment

但是这样会有一个问题,就是fragment依附的Layout下会有很多个fragment,影响性能

而用replace会释放掉Layout下绑定的fragment

经过测试

只要我们用集合把fragment存储起来就不会重复创建了

不知道这样的话对性能上有没有优化。。。源码看了还是不大理解。。。

这个写得感觉挺好的~

2017年2月9日16:30:04-----------------------------------------------

transaction.replace()相当于 transaction.remove() + transaction.add()

transaction.detach()相当于transaction.remove() + transaction.addToBackStack() ,

------------------------------------个人见解

正常remove()之后提交事务,fragment会销毁

执行onPause()——>onStop()——>onDestroyView()——>onDestroy()——>onDetach()

再显示的话会

调用onAttach()——>onCreate()——>onCreateView()——>onActivityCreated()——>onStart()——>onResume()

如果remove()之后加上transaction.addToBackStack(),就相当于执行transaction.detach(),

再提交事务的话,fragment会

执行onPause()——>onStop()——>onDestroyView()

执行transaction.attach(),再显示的话

调用onCreateView()——>onActivityCreated()——>onStart()——>onResume()

如果想要保存当前用户输入数据,切换到其他fragment就要用transaction.add(),添加之前一般做一个判断fragment.isAdded(),如果已经存在就show(),不存在才add(),如果直接

add()会执行

onAttach()——>onCreate()——>onCreateView()——>onActivityCreated()——>onStart()——>onResume()

然后transaction.hide()和transaction.show()控制。

一般会有一个map来保存fragment,但是这个

相关文章

网友评论

      本文标题:android - fragment

      本文链接:https://www.haomeiwen.com/subject/nraxvttx.html