Android开发之Activity

返回栈

Activity与返回栈
1. 运行状态:位于返回栈栈顶
2. 暂停状态:不在栈顶但仍然可见,例如对话框的出现
3. 停止状态:不在栈顶且完全不可见,但系统仍保留该活动的成员变量和相应的状态
4. 销毁状态:被移除返回栈

生命周期

Activity的生命周期
onCreate():在活动第一次被创建时调用。

onStart():在活动由不可见到可见时调用。

onResume:在活动准备与用户进行交互时调用,此时活动必须位于栈顶并且处于运行状态

onPause:在该Activity**失去焦点未被完全覆盖**,系统准备去启动或恢复另一个活动时调用,通常会在该方法中释放一些消耗CPU的资源,以及保存一些重要数据。

onStop:在活动完全不可见时调用。不同于onPause的是若新活动是以对话框的形式启动的那么该活动只会执行onPause方法。

onDestroy:在活动被销毁之前调用。

onRestart:在活动由停止状态变为运行状态之前调用。

需要特别注意的是:

当从activity1跳转到另一个activity2时,会先执行activity1的onPause方法,再执行activity2的onResume方法

以上七种又可归纳为:

完整生存期:onCreate()onDestroy()之间

可见生存期:onStart()onStop()之间

前台生存期:onResume()onPause()之间

防止活动被回收导致信息丢失:

一个活动若处于停止即onPause状态是有可能被系统回收的。

但当系统回收活动时会调用 onSaveInstanceState(Bundle) 回调方法。

该方法提供一个Bundle类型参数,可通过Bundle保存数据。

然后在其它活动的onCreate方法中的Bundle类将它取出来。

异常情况下的生命周期

异常情况下Activity的重建过程
onSavaInstanceState会在onStop被调用前调用,但可在onPause被调用前调用也可以在onPause被调用后调用。
  在Activity被重建时系统会调用onRestoreInstanceState,并且onSavaInstanceState会把保存了数据的Bundle分别传给onCreate和onRestoreInstanceState。
注意
onSavaInstanceState只有在activity异常销毁时才会被调用。

猜你喜欢

转载自blog.csdn.net/figurers/article/details/79686914