序言


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官方文档,开启传送门

结语


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

 

转载自:https://www.jianshu.com/p/01d6949f2710

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. Android(安卓)--- Activity生命周期
  6. android实现字体闪烁动画的方法
  7. Android中dispatchDraw分析
  8. Android四大基本组件介绍与生命周期
  9. Android(安卓)MediaPlayer 常用方法介绍

随机推荐

  1. 在 Android 设备上搭建 Web 服务器
  2. 关于Android的多种屏幕适配
  3. Android(安卓)NDK 知识系列(四)
  4. android内存溢出问题
  5. Android WebView、js交互方式原理总结
  6. android 多余文字显示省略号
  7. Android(安卓)FragmentTabHost 示例
  8. 工作不久的安卓开发者,他们是这样规划自己
  9. Android隐藏标题栏、状态栏、导航栏及全
  10. Android 操作系统 获取Root权限 原理解析