Android有四种启动模式:standard、singleTop、singleTask和singleInstance。
-
standard:标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在;
-
singleTop:栈顶复用模式。在这种模式下,如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前的请求信息。需要注意的是,这个Activity的onCreate、onStart不会被系统调用,因为它并没有发生改变。如果新的Activity的实例已经存在但不是位于栈顶,那么新的Activity仍然会重新创建;
-
singleTask:栈内复用模式。这是一种单实例模式,在这种情况下,只要Activity在一个栈中存在,那么多次启动此Activity都不会重新创建实例,和singleTop一样,系统也会回调其onNewIntent;
-
singleInstance:单实例模式,这是一种加强的singleTask模式,它除了具有singleTask模式的所有特性外,还加强一点,那就是具有此种模式的Activity只能单独地位于一个任务栈中。