zoukankan      html  css  js  c++  java
  • Fragment 的生命周期

     

    Fragment的生命周期,按照正常顺序来看依次是:

    onAttach(),老式的方法是以Activity为参数,后来改成了context做参数。但是其实我实际项目中并没有重写这一方法,因为其父类方法就可以完成Activity和fragment的绑定(关联)。

    onCreate(), 在这个方法里可以初始化一些数据,这些数据在onPause(),onStop()调用之后也能保持住不被销毁。另外隐藏状态栏这种操作也可以放在这里。要注意的是这个onCreate()只调用一遍,所以如果fragment没有被销毁并重新创建的话,一些指示当前fragment以方便Activity管理的flag参数就不要在这里设置。

    onCreateView(), 如果设置了模拟返回栈,那么在onDestroyView()之后,fragment就会回到这里。这个地方主要是产生一个可以在上面画控件的layout,并返回一个view类实例。要注意的是不应该在这里画控件,可能会出错。当我把flag参数放在这里时,是可以正常工作的(也许是因为似然没有加进返回栈,但fragment都没有执行到onDestroy()那一步)。

    onActivityCreated(), 这里就比较适合初始化控件。当fragment执行到这里的时候,对应的是Activity的onCreate()刚执行完成。

    -----------------接下来几个方法和Activity中是一样的作用:---------------

    onStart(), fragment可见。

    onResume(), fragment可获取焦点(可以点击?)。如果要设置窗口(强制/感应)横屏或竖屏,代码可加在这里。

    onPause(),fragment 失去焦点但仍可见,部分遮挡(比如出现dialog时吧)。

    onStop(), fragment被完全遮挡。

    ---------------------------------------------------------------------------------------------

    onDestroyView(), layout被移除,包括控件资源。比如在使用viewPager时,因为它的缓存机制总是同时保存三个fragment,当滑动到第四个页面时,第一个页面会执行onDestroyView(),但未执行onDestroy(), 所以它会仍然与Activity保持关联。这样在重新滑动到第一页时,它会直接执行onCreateView()。

    onDestroy(), 与Activity中的一样,销毁。

    onDetach(), fragment与Activity解除关联(都销毁了还有啥关联?)

  • 相关阅读:
    25个完美的Opencart模板,让顾客无法抗拒!
    来自极客标签10款最新设计素材-系列十
    Creating Contextual Menus创建上下文菜单
    java解惑之常常忘记的事
    java 泛型实例详解(普通泛型、 通配符、 泛型接口)
    Java 泛型、通配符? 解惑
    Java中public,private,protected,和默认的区别
    windows 环境下dos 命令符下进D盘(非c盘系统盘)根目录
    I/O流之--转换流:InputStreamReader 和InputStreamWriter
    java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)
  • 原文地址:https://www.cnblogs.com/jason31/p/9521985.html
Copyright © 2011-2022 走看看