美文网首页Android Zone
Android Fragment生命周期解析

Android Fragment生命周期解析

作者: 翻译不了的声响 | 来源:发表于2018-03-26 09:30 被阅读21次

    序言


    Fragment从Android v3.0版本开始引入的,随着界面布局的复杂化,处理起来也更加的复杂,引入Fragment可以把Activity拆分成多个部分。一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。

    Fragment生命周期流程图

    正文


    1. 生命周期简介

    Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。Fragment状态与Activity类似,也存在如下4种状态:

    • 运行:当前Fmgment位于前台,用户可见,可以获得焦点。
    • 暂停:其他Activity位于前台,该Fragment依然可见,只是不能获得焦点。
    • 停止:该Fragment不可见,失去焦点。
    • 销毁:该Fragment被完全删除,或该Fragment所在的Activity被结束。
    2. 生命周期状态

    Fragment的生命周期与Activity的生命周期十分相似,如下图所示:

    Activity和Fragment生命周期对比流程图

    从上图可以看出,Activity中的生命周期方法,Fragment中基本都有,但是Fragment比Activity多几个方法。各生命周期方法的含义如下:

    • onAttach() :
      当Fragment与Activity发生关联时调用。
    • onCreate():
      创建Fragment时被回调。
    • onCreateView():
      每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件。
    • onActivityCreated():
      当 Fragment 所在的Activity被启动完成后回调该方法。
    • onStart():
      启动 Fragment 时被回调,此时Fragment可见。
    • onResume():
      恢复 Fragment 时被回调,获取焦点时回调。
    • onPause():
      暂停 Fragment 时被回调,失去焦点时回调。
    • onStop():
      停止 Fragment 时被回调,Fragment不可见时回调。
    • onDestroyView():
      销毁与Fragment有关的视图,但未与Activity解除绑定。
    • onDestroy():
      销毁 Fragment 时被回调。
    • onDetach():
      与onAttach相对应,当Fragment与Activity关联被取消时调用。
    3. 生命周期调用

    1)创建Fragment
    onAttach() —> onCreate() —> onCreateView() —> onActivityCreated() —> onStart() —> onResume()
    2)按下Home键回到桌面 / 锁屏
    onPause() —> onStop()
    3)从桌面回到Fragment / 解锁
    onStart() —> onResume()
    4)切换到其他Fragment
    onPause() —> onStop() —> onDestroyView()
    5)切换回本身的Fragment
    onCreateView() —> onActivityCreated() —> onStart() —> onResume()
    6) 按下Back键退出
    onPause() —> onStop() —> onDestroyView() —> onDestroy() —> onDetach()

    参考

    Fragment官方文档
    http://www.android-doc.com/reference/android/support/v4/app/Fragment.html

    结语


    至此,Fragment的生命周期介绍完毕。Fragment具有与Activity很相似的生命周期,依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。

    相关文章

      网友评论

        本文标题:Android Fragment生命周期解析

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