android activity 启动模式
android 开发中,activity的启动模式有以下四种
standard
singleTask
singleInstance
singleTop
standard
标准启动模式,默认的,每次打开这个activity,都会创建一个新的实例添加到acitivty栈里。
singleTask
在同一个activity栈中只存在一个这个activity的实例,如果已经存在栈顶了,就不会创建新的了,如果不存在栈顶就会把在它上面的所有activity的实例出栈,将自己处于栈顶位置。
singleInstance
这个属于单例的情况,它不仅仅是在当前的activity栈内是单例的,而且也是全局单例的,当activity被标记为singleInstance的时候,本来启动它的activity在activity栈A中,当启动了它时,会创建一个新的activity栈B,把它的实例放在activity栈B中去
singleTop
singleTop的启动模式和standard非常类似,区别就是在当前的activity栈里,如果已经有一个这个activity的实例,并且处于栈顶位置,就不会创建新的这个activity的实例,但是如果不再栈顶,就会创建一个新的这个activity实例,并添加到栈顶,并不会影响之前创建的这个activity的实例。在当前的任务栈中如果没有这个activity的实例,就会创建一个,并添加到栈顶。
总结
在开发过程中,针对不同的activity页面,需要考虑不同的需求场景选择不同的启动模式,以达到最佳的用户体验。
发现的一些类似任务栈使用不当的案例
在早期的微信版本中,点击朋友圈可以打开2个或者多个(只要你手速够快,手机响应有够慢)朋友圈的页面。