相信大家都非常熟悉Activity的启动模式了,不同的人也有不同的理解,特别是面试的时候也会被经常拿来问,今天特意整理了下,以留作纪念.
Standard-标准启动模式:
该模式也即是默认的启动模式,如果被启动的Activity的启动模式是standard的话,每次启动都会在任务栈中创建新的实例,即创建新的Activity,例如Activity A 启动Activity A,那么任务栈就会存在2个Activity A,当按下返回键的时候会依次退出任务栈.
SingleTop-栈顶启动模式:
该模式很好理解,可谓见名知意,既然是栈顶启动模式,那么启动的话肯定和栈顶有关,即如果启动的目标Activity是SingleTop模式的话,那么首先会判断该Activity是否处于任务栈的栈顶,如果处于的话,就不会创建新的实例,直接打开处于任务栈的Activity,否则的话就会创建新的实例.例如任务栈中有Activity A和Activity B,其中Activity A处于栈顶且是栈顶启动模式,那么在Activity A中再打开Activity
A本身,是不会再创建新的Activity A的;相反,如果Activity B处于栈顶,那么在Activity B启动Activity A就会重新创建Activity A.
SingleTask-单任务栈模式:
该模式也很好理解,所谓单任务栈的意思就是说一个任务栈里面只能存放该实例一次.即如果要打开的目标Activity是单任务栈模式的,那么无论改目标Activity处于任务栈的什么位置,它都会将处于它之上的所有Activity统统弹出任务栈来打开它本身,而不会重新创建新的Activity;例如任务栈中有Activity A,B,C,D,(A处于栈顶,D处于栈低),如果D是单任务栈启动模式,那么在A中打开D的效果就是D被打开了,同时处于D之上的A,B,C都会弹出任务栈,当在D中按下返回键的时候,就会直接回到桌面.
SingleInstance-单实例模式:
单实例模式比较特殊,它和其他3种启动模式的最大区别就是打开它,它会创建一个新的任务栈来存放它的实例.其它3种都是在同一个任务栈中存在的.还有一个特点就是,单实例的Activity是单独霸占一个任务栈的,即该任务栈中只有一个Activity实例.