Activity的典型情况生命周期和异常情况下生命周期

典型情况下的生命周期

我们按照下图的整个流程来介绍下典型情况下的Activity生命周期。

Activity的典型情况生命周期和异常情况下生命周期_第1张图片
Android_Activity_LifeCyle.png
  1. onCreate()方法:表示活动正在创建,进行一些初始化工作。
  2. onStart()方法表示Activity正在启动,已经存在了,但是尚未显示出来
  3. onResume()方法表示Activity已经可见了,显示在前台了,用户已经可以与界面进行交互了
    注意:在Activiy创建时,这三个方法在用户看来,是非常迅速的几乎同时完成的,一气呵成,所以没有明显的中间状态
  4. onPause()方法表示该Activity已经不在前台了,可能被半透明的活动遮挡这一份,从而继续保持这个状态;也有可能已经彻底不可见了,此时就会继续执行onStop()方法。对于,前一种情况而言,如果该Activity在回到前台,就会调用onResume()方法。我们应当避免,在onPause()方法中调用cpu密集型的操作,因为下一个启动的Activity的onResume()方法必须在这个onPause()方法后才能执行。因此,在onPause()方法中,我们可以
  • 停止动画等消耗cpu的操作
  • 提交未保存的修改,当用户希望离开时保存时
  • 释放资源
  1. onStop()方法执行时,Activity将由可见转为彻底不可见,此时可以执行一些更加重的释放资源的操作,比如数据库操作等等。此时,如果Activity彻底销毁,就会执行onDestray()方法;如果Activity重新开始的话,就会执行onRestart()方法,接着执行onStart()方法,接着onResume()方法。
  2. onRestart()方法:表示Activity正在重新启动,一般情况下,当Activity从不可见重新变为可见状态时,onRestart()方法会被调用。
  3. onDestroy方法:表示Activity即将被销毁,做一些回收工作和资源释放。

异常情况下的生命周期

异常情况总体可分为两种:资源相关的系统配置发生改变导致Activity杀死重建(比如翻转屏幕);内存不足,被杀死。在这两种异常情况下终止时,系统会调用onSaveInstanceState()来保存当前Activity状态,在onStop()方法前调用,和onPause()没有时序关系。
当Activity重新建造后,系统会调用onRestoreInstanceState()方法,并把Activity销毁时onSaveInstanceState()保存的Bundle对象作为参数同时传递给onRestoreInstanceState()方法和onCreate()方法。因此,我们可以通过这两个方法来判断Acitivity是否被重建了。从时序上说,onRestoreInstanceState()方法的调用时间在onStart()方法后。
在考虑到这中情况,我们可以在'onSaveInsanceState()'方法中保存我们在Activity异常关闭时需要保存的东西。然后在重启的onCreate()中取出数据,数据是以Bundle格式存入取出的。

你可能感兴趣的:(Activity的典型情况生命周期和异常情况下生命周期)