1.singleInstance
Activity只会在自己的任务栈里面,并且这个任务栈里面只会有一个实例存在。如果你要保证一个Activity在整个操作系统里只有一个实例存在,使用singleInstance,是你的不二选择。
一旦要启动一个带singleInstance的Activity时,系统将为这个Activity创建一个全新的任务栈。举例说明,如果在1号任务栈中启动一个带singleInstance的Activity时,系统将创建一个全新的2号任务栈并将该Activity存于栈中,并将2号任务栈置前,1号任务栈滞后;如果当前在2号任务栈想实例化1号栈里的普通模式的Activity,系统则将1号任务栈置前,2号任务栈滞后,并把实例化一个普通模式的Activity压入1号栈中,如果当前在2号任务栈依旧启动相同带singleInstance的实例,则系统什么也不添加;如果当前系统任务栈同时存在1号任务栈和2号任务栈,并且当前界面Activity在1号任务栈中并且要启动2号任务栈中带singleInstance
的Activity,系统则只是将2号任务栈置前于1号任务栈。
2.singleTask
当前任务栈里里面只能有一个实例存在,当开启Activity的时候去检查任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的Activity,并且把这个Activity上面的所有别的Activity都清空,复用这个已经存在的Activity,保证整个任务栈里面只有一个实例存在
3.singleTop
如果任务栈的栈顶存在这个要开启的Activity,系统则不会重新创建Activity,而是复用已经存在的Activity。保证栈顶如果存在,则不会重复创建
4.stand
标准模式启动一个Activity
针对这四种启动模式,个人建议是写一个简单的demo,反复启动不同模式的Activity,自然就能发现其中的特点。