Activity和Service的生命周期

    xiaoxiao2025-03-04  32

    Acitivty有6个生命周期,created,started,resuemed,pause,stop,destory,只有resumed,paused,stopped这三个状态能够长久存在。

    resumed:继续状态,又称为运行态,在这种状态下是可见的,并且能够执行代码。 paused:暂停状态,在这种状态下,Acitivity处于半透明或者被其他Activity遮挡的状态,不能够执行代码。 stop:停止状态,在这种状态下,Activity在后台,并无法执行任何代码。

    创建过程

    系统会在创建的时候一次调用onCreate方法,之后调用onStart方法,然后立刻调用onResume方法,中间不会有任何驻留。

    销毁过程

    当Activity的第一个回调是onCreate时,那么最终会调用onDestory方法。在所有情况下,系统在调用onPause或者onStop之后都会调用onDestory方法,只有一个例外,在onCrate方法中使用finish方法那么会直接调用onDestory方法销毁活动。

    暂停和继续

    只要活动处于部分可见并且不处于焦点的时候就处于暂停状态,这时候只要活动被完全遮挡那么就会进入停止状态,如果用户返回到这个活动,那么久会调用onReume方法继续活动。

    暂停Acitivity

    一旦活动进入暂停状态的时候意味着活动很快就会进入停止状态,这时候我们可以:

    停止动画等消耗CPU资源的操作提交未保存的操作释放系统资源

    继续Activity

    只要活动进入前台就一定会执行onResume方法,因此我们在里面实现一些必须要做的初始化操作。

    停止并重新开始

    停止并重新开始的几种场景:

    用户从最近应用的窗口到之前的活动,那么当前的活动就会停止,之前的活动重新开始。用户从一个活动创建另一个活动的时候,当前的活动不可见,进入停止。用户接听电话时。

    停止Activity

    停止的时候,活动会进入不可见的状态,一旦活动进入停止状态,系统会在需要的时候销毁活动来获得内存。在极端的情况下,系统可能不会调用onDestory方法,因此需要注意内存泄漏的情况。尽管onPause在onStop方法之前执行,但是应该使用onStop来执行一些占用更多cpu的操作。当Activity停止的时候,Activity的对象任然处在内存当中,当再次开始的时候,不需要做onPause回调方法中的一些初始化工作。

    开始,重新开始Activity

    当活动从停止状态重新开始时会调用onRestart和onStart方法,可以在onRestart方法中做一些重新开始才需要的的特殊操作,由于无论是否重新开始,一定为调用onStart方法,因此和onStop对应的一些回调操作需要放在onStart中执行。

    重新创建

    当活动由于异常的原因被销毁的时候,系统会保存实例状态,然后在重新创建的时候系统会使用这些实例状态来重新创建活动而不需要代码。

    最新回复(0)