Android官方文档和其他资料都对Activity的生命周期进行了详细的讲解,在项目开发中遇到了有关Activity的生命周期的问题,再次对Activity的声明周期进行一次总结复习。
Activity的生命周期可以分为两种情况:一种是正常情况下的生命周期,另一种是异常情况下的生命周期。
1. 正常情况下,Activity会经历如下生命周期:
(1) onCreate: 表示Activity正在被创建,这是生命周期的第一个方法,在这个方法中,我们可以做一些初始化操作(如:使用setContentView加载页面布局,对一些控件进行初始化等)。
(2) onStart:表示Activity正在被启动,此时Activity已经可见了,但是还没有出现在前台,还无法和用户进行交互,也可以理解为Activity已经显示出来了但是我们还看不到。
(3) onResume:表示Activity已经可以看见了,并且出现在前台并开始活动。注意:和OnStart相比,onStart 和onResume都表示Activity已经可见,但是onStart执行的时候Activity还在后台,到onResume的时候Activity才显现到前台。
(4) onPause:表示Activity正在停止,正常情况下,紧接着OnStop方法就会被调用,当Activity要跳转到另一个Activity或应用正常退出的时候都会执行这个方法。我们可以进行一些轻量级的存储数据和初始化等工作但是不能太耗时。
(5) onStop:表示Activity即将停止,在这个方法证可以做一些轻量级的回收工作,同时也不能太耗时。
(6) onDestory:表示Activity即将被销毁,这是Activity生命周期中的最后一个回调方法,在这个方法中我们可以做一些回收工作和资源释放。
(7) onRestart:表示Activity正在重新启动,一般情况下,当当前Activity从不可见重新变为可见状态的时候,OnRestart方法会被调用。这种情况一般是用户行为导致,(如:当用户按Home键切换到桌面后又切换回来或从一个Activity返回到前一个Activity会触发这个方法)
Activity在启动过程中分为以下几种情况:
1.针对一个特定的Activity,当启动的时候,执行的方法:onCreate->onStart->onResume.
2. 当用户打开新的Activity或者切换到桌面的时候,回调执行方法:onPause->onStop,当新的Activity采用透明主题的时候,Activity不会回调onStop
3. 当用户再次回到原Activity时,回到执行方法:onRestart->onStart->onResume.
4. 当用户按back键退出的时候,执行方法:onPause->onStop->onDestory.
异常情况下Activity的生命周期:
在一些特殊情况下,当系统配置发生改变或系统内存不足时,Activity可能被杀死。
资源内存不足导致优先级低的Activity被杀死
Activity按照优先级从高到底可以三种:1.前台Activity--正在和用户交互的Activity,优先级最高;2. 可见但非前台Activity-- 比如Activity中弹出一个对话框,导致Activity可见但是位于后台无法和用户直接交互;3. 后台Activity ---已经被暂停的Activity,比如执行了onStop,优先级最低。 当系统内存不足的时,系统就会按照以上的优先级去杀死Activity所在的进程。并且后续通过onSaveInstanceState 和onRestoreInstanceState来存储和恢复。