Android开发之旅二---Activity生命周期

开篇说到了Android四大组件之一的Activity,提到Activity就得提一下它的生命周期。Android官方提供的文档可以给我们提供很大的帮助,下图就是Android官方提供给我们的Activity生命周期图。
Activity生命周期图
通过上图我们不难看出Activity的生命周期从上到下依次为:
onCreate->onRestart->onStart->onResume->onPause->onStop->onDestroy这几个部分。
正常启动一个Activity会依次调用:onCreate->onStart->onResume
当这个Activity按返回键,正常退出时会依次执行:onPause->onStop->onDestroy
当一个Activity正在运行时,弹出一个对话框,此时Activity部分可见会执行:onPause
当对话框消失,Activity又完全可见时会执行:onResume,正如上图所示。

当从第一个Activity跳转到第二个Activity时,第一个Activity会依次执行:onPause->onStop。从第二个Activity返回到第一个Activity,这时第一个Activity会执行:onRestart->onStart->onResume
假设Activity A启动一个Activity B,那么,系统会先调用A的onPause,然后调用B的onCreate、onStart、onResume。然后才会调用A的onStop方法。

因此,在旧的Activity的onPause返回之前,新的Activity不会被创建。因此,这里不要做太费时的事情。
onPause方法中建议做的操作有:停止动画这样大量消耗CPU的动作,使Activity的切换更快速;关掉相机这样独占式访问的资源。

后台Activity因为资源紧张被系统终止时,无论是否可见,都不会调用任何方法,除onSaveInstanceState。
通过android.os.Process.killProcess杀死时,不会调用任何方法,包括onSaveInstanceState。
关于状态保存,根据官方文档如下图所示:
这里写图片描述
onSaveInstanceState

当Activity被切换到后台(部分可见或者不可见,但己不与用户交互)时,就有可能因为资源紧张而被kill,会调用这个方法。

如果这个方法被调用的话,会在onStop之前,但与onPause谁先谁后不确定。

这个方法的默认实现中,保存了当前可见的View树的状态,重写时,如果要保留这个特性的话,调一下super.onSaveInstanceState。

onRestoreInstanceState

这个方法在onStart和onResume之间被调用。

绝大部分情况下,使用onCreate就可以恢复上一次保存的状态。
本文参考:Activity生命周期与保存状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值