Android中的Activity启动模式

Android中Activity是我们最常用的组件,我们需要深入的了解下activity的四种启动模式:

  1. standard
  2. singleTop
  3. singleTask
  4. singleInstance

standard 标准启动模式

顾名思义,这是Android的默认启动模式,当我们每次启动一个activity时,系统都会新创建一个实例,不管这个实例是否存在,他的生命周期函数会依次被调用。我们多次启动同一个activity系统会创建多个实例同时把他们一一放入任务栈中,我们点击back返回键时,会一一回退。

singleTop 栈顶复用模式

在该模式下,如果新的activity已经位于任务栈的栈顶,那么此activity不会被重新创建,同时他的onNewIntent会被回调,通过该方法我们可以取出当前请求的信息,这时候onCreate,onStart不会被调用。如果新的activity不是在栈顶,但是已存在,那么还是会重新创建实例

singleTask 栈内复用模式

在activity栈内,只要有一个实例存在,多次启动activity都不会重新创建实例,系统会回调onNewIntent函数,和singleTop效果一样。这里会分几种情况:

  1. 当前任务栈S1中情况为ABC,这时D以singleTask模式启动,要求任务栈为S2,由于S2和D都不存在,这时候系统会先创建任务栈S2,然后再创建D的实例并将其放入到S2中
  2. D的要求任务栈为S1,其他都和1相同,那么系统会直接创建D然后放入到S1中。
  3. 如果当前任务栈情况为ADBC,这时D以singleTask模式启动,要求任务栈为S1.这时系统会将D切换到栈顶,同时调用onNewIntent函数。由于singleTop具有clearTop的效果,会导致所有在D上面的Activity全部出栈,所以最终变成了AD。

singleInstance 单实例模式

这是一种加强型的singleTask模式,他除了具有所有singleTask的特性外,还只能单独处于一个单独的任务栈中。

你可能感兴趣的:(Android中的Activity启动模式)