Android共有四种启动模式。
要改变启动模式,只需要在AndroidManifest.xml文件中配置一下即可
根据不同的需求,使用不同的启动模式,下面就详解一下这4中启动模式。
1、standard
也是默认的启动模式,不写启动模式的话,就会自动使用这一模式。在这个模式下,每次跳转都是创建一个新的实例,相同的Activity也会再次创建一个实例,每次创建新的实例都是放到同一个栈中。
比如说,现在有一个FirstActivity,里面有个按钮,让它再次跳转到FirstActivity,多点几次。然后点击返回,他会一个一个的进行返回操作。就像是一个无盖的盒子,点击一次放进去一个东西,再点击一次,又把新(也可能是同一个)东西放在以前的东西上面,一层层的摞起来,当你要取出来东西的时候,当然要自上而下的取出来。standard就是这个道理。
2、singleTop
在这个模式下,FirstActivity中一个按钮跳转到FirstActivity,这时,不管你点击多少次按钮,它就只会建立一个实例,因为都是相同的Activity,这个Activity一直都在栈顶,他不会再重新建一个实例,点击一次返回直接退出。那我们想一想,如果让FirstActivity-SecondActivity-FirstActivity,这样就和standard一样了,因为栈顶一直都在变。
3、singleTask
此模式非常绝情,当我们要创建FirstActivity的实例的时候,他会查询栈中是否有相同的实例,如果有,在栈顶,那和singleTop一样,不在栈顶,把FirstActivity的实例上面的直接销毁,让FirstActivity作栈顶。相同的实例不会再创建第二次。
4、singleInstance
此模式那就更加强势了。当加载FirstActivity的时候,如果有,直接用;如果没有,创建一个Task,把自己实例化了放进去。然后它只允许它自己在这个栈中。如果现在想加载SecondActivity,它会再创建一个Task,实例化后放进去。如果想再加载FirstActivity,就直接调用之前创建的那个。