android activity 启动模式有四种。每次启动的activity实例都会保存到任务栈中。
1、standard 标准模式 ,如果不设置,将是每个activity的默认模式。
1)设置为standard模式的activity,每次使用startActivity方法启动时
都会创建新实例
2)设置为standard模式的Activity的多个实例可以存在于同一个任务中
也可以存在于不同的任务中
3)在某个任务中启动的Activity,在该任务的Activity栈中创建、保存直至其被销毁
2 、singleTop模式
1)当该模式的Activity位于当前任务栈的栈顶时,如果重复启动该Activity
并不会创建新的实例,而是调用 onNewIntent方法,将intent传入该实例
2)如果该模式的Activity,不位于栈顶,则其特性与标准模式的Activity一致
3、singleTask
1)设置为singleTask模式的Activity是单例的。即同一时刻整个系统中只能存在该Activity的
一个实例
2)设置为singleTask模式的Activity在被重复启动时,不会创建新实例,而是将栈中位于其上的
其它Activity销毁,在将该实例作为栈顶交互
3)在创建设置为singleTask模式的Activity的实例时,如果该任务的taskAffinity值与该Activity的
taskAffinity值相同,则在当前任务中创建,否则在新任务中创建
4、singleInstance
1)设置为singleTask模式的Activity是单例的。即同一时刻整个系统中只能存在该Activity的
一个实例
2)设置为singleInstance模式的Activity,被创建时永远都会在新的任务中创建
3)设置singleInstance模式的Activity,不能与其它Activity同在一个栈内。
通过该Activity启动的Activity,将被在其它任务栈中创建——如果存在与被创建Activity的taskAffinity相同的
任务,则在该任务中创建,否则在新任务中创建
TaskAffinity 亲族 吸附
1)每个Task 每个application 以及每个activity都有taskAffinity\
2)对于application,其默认的TaskAffinity为其所在程序的主包名
3)对于activity,其默认的TaskAffinity值继承自application
4)对于Task,其TaskAffinity等于其Activity栈栈底的Activity的TaskAffinity
本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,包括它们各自的特性和应用场景。

1677

被折叠的 条评论
为什么被折叠?



