美文网首页
Activity的典型情况生命周期和异常情况下生命周期

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

作者: 吃葡萄皮不吐葡萄 | 来源:发表于2016-06-08 16:43 被阅读413次

    典型情况下的生命周期

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

    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的典型情况生命周期和异常情况下生命周期

          本文链接:https://www.haomeiwen.com/subject/cnejdttx.html