美文网首页
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