1、Standard 模式
首先这是一个默认的启动模式,举例: 我们想启动一个ActivityB,无论任务栈中是否存在ActivityB的实例,都会创建一个崭新的ActivityB位于栈顶。
2、SingleTask模式
举例启动Activity C
- 任务栈已经存在C的实例并且未位于栈顶
当启动Activity C 时,会将Activity C 上方所有的实例全部出栈让其位于栈顶,并且回调Activity C 中的onNewIntent()方法。
- 任务栈不存在C的实例
当启动Activity C 时,会创建一个崭新的Activity C 实例在栈顶
3、SingleTop 模式
如果任务栈内存在Activity D 实例且位于栈顶时,当启动Activity D时,会复用之前创建的ActivityD实例,并且回调onNewIntent()方法
如果任务栈中不存在Activity D的实例,当启动Activity D时,会创建一个崭新的ActivityD的实例
4、SingleInstance 模式
如果在 AndroidManifest.xml 中将 Activity E 的启动模式设置为 SingleInstance,并且任务栈内不存在 Activity E 的实例,当启动 Activity E 时,会在创建一个新的任务栈,并且栈内只有 Activity E 一个实例
如果启动模式为 SingleInstance 的 Activity E 已经独立存在于自己的任务栈中,此时再启动 Activity E, 则会复用已经创建的 Activity E 的实例,并且 Activity E 的 onNewIntent() 方法被调用
使用场景:
模式 | 使用场景 | 举例 |
---|---|---|
singleInstance | 作为外部App调用自己客户端程序的入口的Activity都会采用singleInstance启动模式 | 比如手机拨号界面,社交app分享界面 |
singleTask | App内部适合作为程序入口点 | 比如我们的首页 |
singleTop | 频繁启动的场景 | 比如连续收到多个通知 |
standard | 默认 | 默认 |
本文地址:https://blog.csdn.net/u010844304/article/details/107460917
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论