Activity有四种加载模式:
1 、 standard
2 、 singleTop
3 、 singleTask
4 、 singleInstance
1 、 standard 模式
1 ) 默认模式,不需要配置 launchMode 。
2 ) intent 跳转时将发送给新的实例。
2 、 singleTop 模式
1 ) intent 跳转时将发送给新的实例。
2 ) 如果创建 intent 的时候栈顶已经有要创建的 Activity 的实例,则将 intent 发送给该实例,而不发送给新的实例。
3) 可用来解决栈顶多个重复相同的 Activity 的问题。
3 、 singleTask 模式
1 )只创建一个实例。
2 )当 intent 到来,创建 Activity 的时候,系统会检查栈里面是否已经有该 Activity 的实例。如果有直接将 intent 发送给它。
4 、 singleInstance 模式
1 )只创建一个实例。
总结
1 、判断 Activity 在 Task 栈中是否存在是在创建 intent 的时候,而不是在 finish 之后。
2 、 standard 模式和 singleTop 模式 intent 跳转时将发送给新的实例,而 singleTask 和 singleInstance 模式只创建一个实例。
3 、除 singleInstance 模式外,其他三种模式都是在同一个 task 栈中。
4 、 singleInstance 模式跳转时会把设置了 singleInstance 模式的 Activity 单独放在一个 task 栈中。实现让别人的程序直接复用你的 Activity 。
5 、 singleInstance 模式的 activity 永远保持在堆栈的顶部(因为它是那个堆栈中唯一的一个 activity )。