Activity从生命周期到源码解析

一:Activity典型情况下生命周期分析

  • onCreate:表示Activity正在被创建,这时生命周期的第一个方法。在这个方法我们可以做一些初始化操作。
  • onResart:表示Activity正在重新启动。一般情况下,当当前Activity从不可见重新变为可见状态时,onRestart就会被调用。表示已经创建的Activity被重新启动。
  • onStart:表示Actvity正在被启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法和用户交互。这个时候可以理解为Activity已经显示出来了,但是还看不到。
  • onResume:表示Activity已经可见了。并且已经出现在前台并开始活动了。注意这个和onStart的对比,onStart和onResume都表示Activity已经可见。但是onStart的时候Activity还在后台,onResune的时候Activity才显示到前台。
  • onPause:表示Activity正在停止,正常情况下,紧接着onStop就会被调用。在特殊情况下,如果这个时候快速的回到当前的Activity,那么onResume会被调用。onPause必须先执行完,新Activity的onResume才会执行
  • onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时
  • onDestroy:表示Activity即将被销毁,这时Activity生命周期中的最后一个回调,在这里我们可以做一些回收工作和最终资源释放。

Activity从生命周期到源码解析

  1. 一个特定的Activity第一次回调为onCreate->onStart->onPesume。
  2. 当打开一个新的Activity或者切换到桌面时候,回调为:onPause->onStop。但新的Activity采用透明主题,那么当前Activity不会回调onStop
  3. 当用户再次回到原Activity时,回调如下:onRestart->onStart->onResume
  4. 当用户按bark键回退时,回调如下:onPause->onStop->onDestroy
  5. 从整个生命周期来说,onCreate和onDestroy是配对的,分别表示这Activity的创建和销毁,并且只可能调用一次。从Activity是否可见来说onStart和onStop是配对的,随着用户的操作或者设备的点亮和熄灭,这两个方法可能被调用多次。从Activity是否在前台来说,onResume和onPause是配对的,随着用户的操作或者设备的点亮和熄灭,这两个方法可能被调用多次。onStart和onStop是从Activity是否可见的角度来回调,onResume和onPause是从Activity是否位于前台这个角度来回调的。

未完待续