activity启动有四种方式:stardard,singleTop,singleTask,singleInsatance;
在清单文件中标注启动方式:
<
android:launchMode="stardard">
stardard 是默认的,新建一个activity,都会在栈中新建;
singleTop:如果实例化一个acticity,在栈顶有这个activity的实例化,则直接调,不然实例化;
singleTask:如果实例化一个acticity,在栈中有这个实例化,直接调用,不然实例化;
singleInstance:在全局变量中,只能允许一个activity实例在栈中,其他都不行。
四种模式的用法:
stardard 是默认,每次启动一个activity 都要,(就算是同一个activity ),都要在栈中开辟内存空间;
singletop 比如qq,出现消息弹出一个activity(如果出现10的消息,因为默认启动模式是singletop 所以一种开辟一次)
singleinstance 比如打开浏览器,一般用于和程序分离界面的
singletask 如果栈中有这个activity 的话,销毁这个activity之前所有activity,把这个activity放在栈顶.一般场景(用于销毁程序):给主activity 设置为singletask,通过其他activity 跳转到主activity ,最后在通过finsh(),销毁这个activity。
简书网站:http://www.jianshu.com/p/7e465622cb80