这篇博客我要对Activity正常情况下的生命周期做一个讲解。

1.什么是正常情况

正常情况指的是我们正常打开关闭页面所要经历的生命周期。

2.正常情况经历的7个生命周期概览

  • onCreate:创建页面。把页面上的各个元素加载到内存中。
  • onStart:开始页面。把页面显示在屏幕上。
  • onResume:恢复页面。让页面在屏幕上活动起来,例如开启动画、开始任务等。
  • onPause:暂停页面。让页面在屏幕上的动作停下来。
  • onStop:停止页面。把页面从屏幕上撤下来。
  • onDestroy:销毁页面。把页面从内存中清除掉。
  • onRestart:重启页面。重新加载内存中的页面数据。

3.每一个生命周期回调方法的相关重点内容

<1> onCreate

  • 启动时调用
  • 生命周期第一个回调方法
  • 可以在这个方法中做一些初始化的工作

<2>onStart

  • 此时Activity已经正在启动
  • 可见但无法交互

<3>onResume

  • 可见可交互
  • 此时Activity处于Active状态

<4>onPause

  • Activity正在停止
  • 与onResume方法成对出现

<5>onStop

  • onPause执行后立即执行
  • 被完全新的Activity覆盖
  • 此时Activity处于Stop状态
  • 不可见,后台运行

<6>onDestroy

  • 表示Activity正在销毁
  • 生命周期最后一个方法
  • 用来做一些回收和资源释放的工作
  • 与onCreate成对

<7>onRestart

  • 表示Activity正在重新启动
  • 由Stopped状态恢复active状态时调用
  • 正常启动不调用

4.几种情况下生命周期的回调顺序

  • 打开一个页面:本页面onCreate → onStart → onResume
  • 从一个页面跳入另一个页面:上一个页面onPause → 下一个页面onCreate → onStart → onResume → 上一个页面onStop
  • 从一个页面返回上一个页面顺序:下一个页面onPause →上一个页面onRestart → onStart → onResume → 下一个页面onStop → onDestroy
  • 横竖屏:无论是竖屏切换到横屏,还是横屏切换到竖屏,都是原屏幕的页面从onPause 到 onStop 再到 onDestroy 一路销毁,然后新屏幕的页面从onCreate到onStart再到onResume一路创建而来。
  • 按HOME健后又返回APP:onCreate → onStart → onResume → onPause →  onStop → onRestart → onStart → onResume
  • onActivityResult 和 onRestart调用顺序:先调用onActivityResult再调用onRestart

正常情况下Activity生命周期基本就先这么多了。

如果大家面试中或者开发中遇到什么关于生命周期的其他问题可以在评论中和我讨论。