Android的Activity有四种启动模式,分别为standard模式,singleTop模式,singleTask模式,singleInstance模式。
standard模式,也就是默认的模式,没什么特别性,就符合堆栈的先入后出原则,每次跳转Activity都会创建Activity实例,并把它放入Activity栈中。
singleTop模式,从字面表达也可以看出,栈顶单例。也就是说,当跳转Activity时,如果跳转的Activity在栈顶已经存在,那么就重用该实例,否则会穿件新的实例并放入栈顶。例如在A页面调用
Intent i = new Intent(A.this,A.class),系统并不会进行跳转,如果在A页面跳转到B页面,B页面跳转A页面,我们会发现堆栈中出现了两个A实例。
singleTask模式,如果栈中已经存在该实例,不管是否在栈顶,都会重用该实例,弹出所有栈中在该实例之上的所有页面。
singleInstance模式:在新栈中创建该Activity实例,并让多个应用共享该实例。如果在当前应用中,和singleTask的区别在于singleInstance不会移除原来在它栈中之上的实例。例如A->B(singleInstance)->C->B(singleInstance)->D,如果此时我们按Back键返回,则界面显示为D->B->C->A,显然B只是被移动了位置。
具体各模式操作可以下载源码进行操作。
转载于:https://blog.51cto.com/janwool/1899489