Android Activity任务栈

1. Activity任务栈


Activity任务栈是Android对Activity界面的一种管理方式。任务栈,顾名思义就是“后进先出”,也就是说,当从一个Activity中启动一个新的Activity界面时,新界面将位于Activity栈的栈顶;当用户按下返回键时,系统将弹出栈顶的Activity并将上一个Activity置为栈顶,此时应用界面也就回到该Activity界面了,如果应用只包含一个Activity或者当前任务栈只存在一个Activity时,按下返回键,系统将退出应用。


2. 启动模式


Activity启动模式表示Activity在任务栈中的切换或启动方式,该模式应该在AndroidManifest.xml文件下配置。下面列出了Activity启动模式的完整配置代码:



其中android:launchMode就表示启动模式,可用启动模式包含standard、singleTop、singleTask、singleInstance四种,如果没有显示声明启动模式,则默认为standard模式。


2.1 standard模式


standard模式是所有Activity的默认启动模式。该模式对Activity的启动和切换没有任何限制,任何时候我们通过startActivity()或startActivityForResult()启动一个standard模式的Activity时,系统都将创建一个该Activity的实例并放置到栈顶。


2.2 singleTop模式


当一个Activity被设置singleTop模式时,那么在Activity任务栈的栈顶将不能同时存在该Activity的两个实例。但是在整个任务栈中,可以交错存在该Activity的多个实例。该模式可以防止同一个Activity重复创建(启动)多次。


2.3 singleTask模式


如果一个Activity被设置为singleTask模式时,那么在整个任务栈中只能存在该Activity的一个实例。当重复启动该Activity时,系统将会销毁(已经存在的)该Activity实例之前的所有其他Activity,并将该Activity移至栈顶


2.4 singleInstance模式


 所有singleInstance模式的Activity都将独立存在一个任务栈中,并且也不能重复创建或启动。当应用首次启动一个singleInstance模式的Activity时,系统将为应用创建一个新的前台任务栈,并将该Activity置于栈内,而且应用的界面永远都是显示前台任务栈。此后任何时候启动其他非singleInstance模式的Activity时,系统将会创建另一个前台任务栈,然后将所有其他非singleInstance模式的Activity按照启动顺序置于该前台任务栈中,最后将singleInstance模式的Activity所在的任务栈移至后台。此后启动任何Activity都只是前后台任务栈的切换,区别是,重复启动同一个singleInstance模式的Actvity时,系统仅仅是将该Actvity所在的任务栈切换至前台,而启动其他类型的Activity时,系统不但需要切换任务栈,而且需要为该任务栈添加新的Activity实例。


你可能感兴趣的:(Android开发)