Activity生命周期以及启动模式总结

一、Activity的生命周期:
onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy()和onRestart()

onCreate():在Activity创建的时候回调
onStart():在Activity启动的时候回调(或者Activity由后台回到前台的时候回调)
onResume():在Activity显示出来并且能够和用户交互的时候回调(获取焦点)
onPause():在Activity界面失去焦点的时候回调
onStop():在Activity有可见变为不可见的时候回调
onDestroy():在Activity被销毁的时候回调
onRestart():Activity由后台回到前台的时候回调
调用关系图:

Activity生命周期以及启动模式总结_第1张图片
image.png
Activity第一次被启动的时候的生命周期回调是:onCreate()--->onStart()--->onResume()
Activity由前台到被销毁的生命周期的回调为:onPause()--->onStop()--->onDestroy()
Activity有可见变为不可见的生命周期回调是:onPause()--->onStop()
当Activity上面弹出一个对话框的时候,Activity界面仍然可见,只是失去了焦点,不能和用户进行交互
了,那么Activity的生命周期执行是:onPause(),不会走onStop()
对话框消失,Activity周明周期是:onResume()
当Activity从后台回到前台的时候,执行的生命周期为:onRestart()--->onStart()--->onResume()
但是有的时候由于系统内存不足,回导致在后台的Activity被杀死,那么我们再想把当前已被
杀死的Activity移到前台,此Activity的生命周期为:onCreate()-->onStart()--onResume()
当Activity被杀死时,我们要保存一下此Activity的一些数据,那么用onSaveInstanceState()
这个回调方法保存数据即可,在Activity重新被创建之后,在onCreate()回调方法里有个参数
saveInstanceState,我们可以从这个参数中拿回之前保存的数据
```
二、Activity的启动模式
Activity的启动模式有四种:standard、singleTop、singleTask、singleInstance
```
可以在清单文件AndroidManifest.xml中通过给标签指定android:launchMode属性来选择
启动模式。
```
1).standard
```
standard是活动默认的启动模式,在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,
并且处于栈顶位置,对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每
次启动都会创建该活动的一个新的实例。
```
2).singleTop
```
当活动的启动模式为singleTop时,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接
使用它,不会再创建新的活动实例。
```
3).singleTask
```
当活动的启动模式为singleTask的时候,每次启动该活动时,系统首先会在返回栈中检查是否存在该活动
的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现则
会创建一个新的活动实例。
```
4).singleInstance
```
指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动
```

你可能感兴趣的:(Activity生命周期以及启动模式总结)