美文网首页
Activity生命周期

Activity生命周期

作者: TSL的开发博客 | 来源:发表于2019-02-12 11:41 被阅读0次
    onCreate():

    当activity被创建的时候执行该方法。该方法做一些初始化动作,比如初始化views和数组等。该方法提供了一个Bundle类型的变量,该变量中有这个activity以前保存的状态信息。这个方法执行完后会执行onStart()方法。若在onCreate方法中加入finish()方法,onCreate下一个运行onDestroy方法。

    onRestart():

    把activity从onStop状态唤醒时,会调用onRestart方法,该方法优先于再次运行的onStart()方法,运行完onRestart之后运行onStart()。如果在onRestart()方法中加入finish()语句,则还是会继续运行onStart及后面的状态方法直到onDestroy运行完。

    onResume():

    当activity开始与用户交互时,会调用onResume,并且为了用户操作此时该activity位于activity栈的顶部。经过某些操作后该方法执行完后执行onPause()。

    onPause():

    当一个activity运行到onResume方法后,不管是这个activity要销毁还是要暂停或者停止,都会调用该方法。这个方法执行之后有可能是onResume也有可能是onStop,若是在这个activity-A中打开一个不完全覆盖这个activity-A的新activity-B,那么activity-A就会是onPause状态,当activity-B退出时,activity-A就直接运行onResume(前提是onPause的方法执行完了,否则会等onPause方法执行完后才运行onResume方法,所以不建议在这个方法中执行CPU密集的操作)。若是需要退出activity-A,那么下一个就会执行onStop。onPause()用于提交未保存发生变化的持久化数据,及停止动画及其他比较消耗CPU的事件(比如广播接收器,传感器,或者消耗电量的资源),这是为了更好的运行新的activity

    onStop():

    当这个activity完全看不见的时候,会调用onStop方法,因为另一个activity会调用onResume并且覆盖这个activity。以下三种情况都会使这个activity调用onStop()方法,第一种是一个新的activity被执行,第二种是一个已经存在的activity被切换到最前端,第三种是这个activity要被销毁。如果通过用户召回这个activity,那么会调用onRestart方法;若这个activity要被销毁,则调用onDestroy方法

    onDestroy():

    当activity销毁前会调用该方法,比如发生如下情况:activity调用了finish()方法来结束这个activity,或者因为系统为了节省空间而临时销毁这个activity,这两个情况可以通过isFinishing()方法判断

    总结:

    当用户自己退出程序的时候,建议在onStop方法中保存数据;
    当用户打开一个新的activity的时候,建议通过onSaveInstanceState来保存数据;这里在网上看到很多人说应该放在onPause里保存,其实我觉得在打开新的一个activity的时候,或者将程序至于后台的时候,都会默认调用onSaveInstanceState方法,而且在这种暂停的状态下,Android的内存管理机制也不太会杀死这种状态的activity。而用onPause保存的时候,若是下一个执行onResume的方法的话,会影响速度,当然数据量小的话也感觉不出来

    原文参考
    https://www.cnblogs.com/joinrudy/p/3465442.html

    相关文章

      网友评论

          本文标题:Activity生命周期

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