我们都知道打开一个app后,我们点开了好几个界面后,就需要点击几次后退键,才能退出程序,这是为什么呢?答案是启动模式与任务栈。
activity有四种启动模式:standard、singleTop、singleTask、singleInstance。
1、standard启动模式(默认的启动模式)
这种模式的特点是,每次页面跳转都会生成一个新的页面并加入任务栈,点击返回键时,栈顶界面出栈并被销毁
上面三张截图是在默认启动模式下的截图,可以看出,一个app程序启动时就会分配一个任务栈,此栈栈ID为4,每次新打开一个界面时,都会创建不同的activity实例。
2、singleTop启动模式
这种模式的特点是,在页面跳转时会进行判断,如果目的页面在栈顶,就不会创建新的activity实例;如果不在栈顶,就创建新的activity实例,并入栈。
如下图,跳转页面为本身时,activity实例id是不变的
如果跳转到其他页面,再跳回来的话,id就会改变,即创建了新的activity实例
3、singleTask(栈内跳转)
这种启动模式的特点是只有一个任务栈,而且任务栈中的实例不重复,有则跳转,没有则创建并跳转。所有创建的实例都在一个任务栈中。
4、singleInstance(栈间跳转)
这种启动模式的特点是每个任务栈只有一个activity实例,也就是说,每次页面跳转,如果目的页面没有创建过,就会创建一个新的任务栈和一个新的activity实例;如果已经存在,就会到相应的任务栈中找到相应的activity实例。
控制启动模式的代码: