记录知识点
Activity的LaunchMode有四种模式
1,standard 普通
2,SingleTop 单例
启动activity如果activity在栈顶不会创建新对象而是调用OnNewIntent()方法。
当该activity不在栈顶,则会创建新对象与standard没什么区别。
例如:
A为singleTop 栈内情况从下至上为A-B-C-D “D”又跳转“A”同时设置了FLAG_ACTIVITY_CLEAR_TOP,此时栈顶只有A,
这时会调用A中重写的OnNewIntent()方法。
3,SingleTask 不会创建相同实例
启动activity时如果该activity在栈里面已经存在,则不会创建新对象,而是clear掉改对象以上的栈空间。同时
会调用OnNewIntent().
4,SingleIntance
设置singleIntance原理:其实是创建了一个新的Task,Android 中的Task可以理解为栈,该Task里面只有一个activity
故此activity不受application的限制,可以多个应用共享。
例如:
调用顺序:(Task1)A-(Task1)B-(Task2)C-(Task1)B
C为singleIntance,以上栈图可定义为2个。C单独在一个Task(栈)内。
从后往前返回时
调用顺序: (Task1)B-(Task1)B-(Task1)A-(Task2)C
之所以2次显示Task1中的B是因为Task1为默认standard状态,该状态根据有顺序的加入栈中,不停创建新对象。
图下
(Task1) (Task2)
|B|
|B| |C| 退出总在最后
|A|
Activity的LaunchMode有四种模式
1,standard 普通
2,SingleTop 单例
启动activity如果activity在栈顶不会创建新对象而是调用OnNewIntent()方法。
当该activity不在栈顶,则会创建新对象与standard没什么区别。
例如:
A为singleTop 栈内情况从下至上为A-B-C-D “D”又跳转“A”同时设置了FLAG_ACTIVITY_CLEAR_TOP,此时栈顶只有A,
这时会调用A中重写的OnNewIntent()方法。
3,SingleTask 不会创建相同实例
启动activity时如果该activity在栈里面已经存在,则不会创建新对象,而是clear掉改对象以上的栈空间。同时
会调用OnNewIntent().
4,SingleIntance
设置singleIntance原理:其实是创建了一个新的Task,Android 中的Task可以理解为栈,该Task里面只有一个activity
故此activity不受application的限制,可以多个应用共享。
例如:
调用顺序:(Task1)A-(Task1)B-(Task2)C-(Task1)B
C为singleIntance,以上栈图可定义为2个。C单独在一个Task(栈)内。
从后往前返回时
调用顺序: (Task1)B-(Task1)B-(Task1)A-(Task2)C
之所以2次显示Task1中的B是因为Task1为默认standard状态,该状态根据有顺序的加入栈中,不停创建新对象。
图下
(Task1) (Task2)
|B|
|B| |C| 退出总在最后
|A|