Activity的生命周期分析
这张图片是来自谷歌开发文档的图片
1. onCreat(): 我们每次创建Activity时, 都会重写此方法,在这个方法里我们做一些初始化操作,比如:加载布局,初始化数据或者事件的绑定.
2. onStart(): 这个方法由不可见到可见被回调.但是此时不能获得焦点
3. onResume():这个方法是在onStart()这个方法后调用. 此时可以与用户进行交互. 此时处在返回栈的栈顶. 并且处于运行状态.
4. onPause(): 这个方法一般用于启动一个新的Activity或者恢复一个Acitvity时调用.
我们通常会在方法次方法中将一些CPU的资源释放掉,以及保存一些关键的数据.
这个方法里不能做一些耗时的工作的,会影响新的Activity的启动.
这时暂停的状态. 此时不能获得焦点,但是依然可见. 例如: 此时弹出一个对话框,这个Activity 依然可见,但是不能获得焦点.
5. onStop(): 此方法被调用, Activity由可见变为不可见. 此时没有焦点,也不可见. 这个方法与onPause的主要区就是: 弹出一个对话框, onPause会被调用.而onStop(),不会被调用.
6. onDestory(): Activity销毁时,会被调用. 在这里我们可以释放一些资源.
7. onRestar(): 这个方法是在活动停止状态变为运行的状态会被调用. 也就是说活动被重新启动了.
Activity的状态
从上面的生命周期可以看出Activity最多有4种状态.
1. 运行状态
当一个Activity处于返回栈的栈顶时,就处于运行状态. 此时系统最不愿意回收,如果回收了,影响用户体验.
2. 暂停状态
这个Activity不再处于栈顶,但是依然可见.就处于暂停的状态.
例如:弹出一个对话框,此时Activity就处于这个暂停的状态. 依然可见,但是不能获得焦点.
3. 停止状态
不在处于栈顶,此时也不可见.就进入了停止的状态.
但是当内存不足时,此时的状态很容易被系统回收.
4. 销毁的状态
当一个活动从返回栈中移除时,就变成了销毁的状态..
系统最喜欢回收这种状态的Acitivity,从而保证系统内存的充足.
在Activity中除了onStart(),其他都是两两配对的.
1. 完整的生命周期
从onCreat()到onDestpry().这之间经历的所有方法.就是一个完整的生命周期.
我们可以在onCreat()中进行一些初始化的操作.然后在onDestory中进行一些释放内存的操作.
2. 可见的生命周期
从onStart()到onStop()方法之所经历的.就是可见的生命周期.
在这期间,Activity一直可见,但不一定能进行交互.这是我们可以在onStop中进行资源的释放,从而保证处于停止的状态的活动不会占用过多的内存.
3. 前台的生存期
处于onResume()和onPause()方法之间所经历的就是前台的生存周期.
Activity总是处于运行状态,与用户进行交互. 我们平时接触最多的就是在这个状态下.
1. 当我们第一次启动Activity时, 会回调:onCreat()—onStart()—onResume();
2. 当用户打开新的Activity时或者切换到桌面时,会回调:onPause()—onStop();
如果此时新的Activity的主题是透明的颜色那么只回调onPause(). 不会回调onStop();
3. 当用户再次回到原Activity时,此时会回调:onRestart—onStart—onResume();
4. 当用户按返回键时: 会回调onPause()—onStop—onDestory();