任务栈的原理
可以在AndroidMenifest.xml文件 的activity里配置任务栈的启动模式,
android:launchMode=""
1、标准模式(standard)
根据先进后出原则,只要是激活,就会生成一个新的实例,在前一个
activity的顶端,比如oneActivity创建,点击进入twoActivity,再
点击一次twoActivity,然后点击进入oneActivity,这时已经在栈中
创建了四个activity实例,需要点击四次返回才能退回主界面
2、独享任务顶端(SingleTop)
如果任务栈栈顶有一个这样的实例,该实例将会被重用,不会创建新的实例
比如oneActivity创建,点击进入twoActivity,再点击一次twoActivity,这
时twoActivity不会被创建,之前的twoActivity会被重用。注意,如果一个
Activity被重用了,就会调用onNewIntent()方法
3、独享任务栈(SingleTask)
如果任务栈存在这样的实例,它会把该实例上面的所有的activity移除,在重
用该实例。比如oneActivity(1)创建(这里使用1和2标记只为说明),点击
进入twoActivity(1),在点oneActivity(2),在点击twoActivity(2),这时
twoActivity(2)不会创建,会重用twoActivity(1),并且oneActivity(2)
会被移除,这时栈中只有oneActivity(1)和twoActivity(1),
4、单实例任务栈(SingleIntance)
创建一个单独的任务栈,该任务栈里面只会有一个实例
比如oneActivity创建,点击进入twoActivity,这时内存会开辟任务栈存放
twoActivity,在点击oneActivity,在点击twoActivity,这时的twoActivity
不会创建,会指向之前的twoActivity,相当于重用了
四种模式的运用场景
1、Standard 很常见
2、SingleTop 浏览器的书签,重用了activity,节约内存空间,方便于用户操作
3、SingleTask 浏览器的界面
4、SingleIntance 通话界面,必须保证不管哪里激活都是同一个界面