Android开发:5分钟解析Activity&Fragment生命周期

Activity生命周期

先来看张官方说明图

详细解读每个方法的调用场景

  • onCreate():当创建启动时调用
  • onStart():当处于可见状态时调用
    调用场景:Activity启动:onCreate()->onStart()->onResume

  • onResume ()
    调用场景:

    1. 当MainActivity第一次启动时:onCreate()->onStart()->onResume ;
    2. “The activity comes to the foreground”:即当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用,比如说解屏、弹窗消失
  • onPause()
    调用场景:“Activity comes to the foreground”,即当SecondActivity启动时且不完全挡住MainActivity时调用(即MainActivity不在UI最顶层,但依然可见,比如弹窗、锁屏,如下图便是MainActivity处于onPause()状态)

onPause.png

此时退出SecondActivity(点击Back键),即MainActivity重新回到当前Activity时(UI最顶层),调用onResume(),即onResume ()是在当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用

  • onStop()
    调用场景:“the activity is no longer visible”,即当SecondActivity启动且完全挡住MainActivity时调用(或按HOME键到主屏)
    (MainActivity不在UI最顶层且完全被挡住时)

此时如果退出(点击Back键)SecondActivity(或回到该应用),调用onRestart()。即onRestart()是当MainActivity从onStop()重新回到当前Activity(UI最顶层)时调用

  • onDestory()
    当MainActivity退出时调用(点击Back键)
    调用finsh()

Activity整个生命周期的完全解读

  • 启动Activity
    系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

  • 当前Activity被其他Activity覆盖一部分其上或被锁屏
    系统会调用onPause方法,暂停当前Activity的执行

  • 当前Activity由被覆盖(一部分)状态回到前台或解锁屏
    系统会调用onResume方法,再次进入运行状态。

  • 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台
    系统会先调用onPause方法,然后调用onStop方法,进入停滞状态

  • 用户后退回到此Activity
    系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

  • 当前Activity处于被覆盖状态或者后台不可见状态,当更高优先级的apps需要内存,系统内存不足
    系统就会杀死当前Activity

  • 而后用户退回当前Activity
    再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

  • 用户退出当前Activity
    系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

Fragment的生命周期

先来看张官方说明图

详细解读每个方法的调用场景

  • onAttach方法
    Fragment和Activity建立关联的时候调用(获得activity的传递的值)
  • onCreateView方法
    为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)
  • onActivityCreated方法
    当Activity中的onCreate方法执行完后调用(表示activity执行oncreate方法完成了的时候会调用此方法)
  • onDestroyView方法
    Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)
  • onDetach方法
    Fragment和Activity解除关联的时候调用(脱离activity)

fragment生命周期解析

  • 当一个fragment被创建的时候:
    onAttach()
    onCreate()
    onCreateView()
    onActivityCreated()

  • 当这个fragment对用户可见的时候,它会经历以下状态。
    onStart()
    onResume()

    1.2可以理解为从创建到显示(或切换)

  • 当这个fragment进入“后台模式”的时候,它会经历以下状态。
    onPause()
    onStop()

  • 当这个fragment被销毁了(或者持有它的activity被销毁了):
    onPause()
    onStop()
    onDestroyView()
    onDestroy()
    onDetach()

  • 就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
    onCreate()
    onCreateView()
    onActivityCreated()

其他场景的调用

  • 屏幕灭掉
    onPause() onSaveInstanceState() onStop()

  • 屏幕解锁
    onStart() onResume()

  • 切换到其他Fragment
    onPause() onStop() onDestroyView()

  • 切换回本身的Fragment
    onCreateView() onActivityCreated() onStart() onResume()

  • 回到桌面
    onPause() onSaveInstanceState() onStop()

  • 回到应用
    onStart() onResume()

  • 退出应用
    onPause() onStop() onDestroyView() onDestroy() onDetach()

###Fragment和Activity的生命周期很相似,以下是对比图

总结

本文对Android的Activity&Fragment生命周期进行了全面介绍,接下来会介绍继续介绍Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记


欢迎关注Carson_Ho的简书!

不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

文章目录
  1. 1. Activity生命周期
    1. 1.1. 先来看张官方说明图
    2. 1.2. 详细解读每个方法的调用场景
    3. 1.3. Activity整个生命周期的完全解读
  2. 2. Fragment的生命周期
    1. 2.1. 先来看张官方说明图
      1. 2.1.1. 详细解读每个方法的调用场景
      2. 2.1.2. fragment生命周期解析
      3. 2.1.3. 其他场景的调用
      4. 2.1.4. 总结
      5. 2.1.5. 欢迎关注Carson_Ho的简书!
,