1、standard 标准启动模式
Activity的标准启动模式,也是默认启动模式,这种模式的Activity可以被多次实例化,在同一个任务栈中可以存在多个Activity实例,每个实例都会处理一个Intent对象。如果栈中已经有一个ActivityA被启动,再启动时,会启动一个新的ActivityA实例。
2、singleTop启动模式
当Activity的实例已经存在于任务栈的栈顶,那么再次启动这个activity时,不会创建新的实例,而是重用位于栈顶的那个实例,并且调用onNewIntent()函数将intent对象传递到这个实例中。但如果Activity不在栈顶,也会和standard模式一样,创建一个新的实例。
3、singleTask启动模式
singleTask模式是常用的启动模式,如果一个Activity设置了这个启动模式,那么在一个任务栈中只能有一个该Activity的实例。如果任务栈中还没有该Activity,会创建一个新的实例并放在栈顶。但如果Activity已存在,系统会销毁处在该Activity上的所有Activity,最终让该Activity实例处于栈顶。同时,回调onNewIntent()函数。
4、singleInstance启动模式
设置了这个模式的Activity会在一个独立的任务中开启,并且这个新的任务中有且只有这一个实例,被该实例启动的其它Avtivity会自动运行在另一个任务中。当再次启动Activity实例时,会重用已经存在的任务和实例,并且调用onNewIntent()。
与singleTask不同的是,同一时刻在系统中只会存在一个这样的Activity实例,不管多少应用要启动该Activity,这个Activity有且只有一个。而singleTask模式的Activity是可以有多个实例的,只要这些Activity不在同一个任务栈就行。