欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android之启动模式

程序员文章站 2022-03-12 19:25:53
1、Standard 模式首先这是一个默认的启动模式,举例: 我们想启动一个ActivityB,无论任务栈中是否存在ActivityB的实例,都会创建一个崭新的ActivityB位于栈顶。2、SingleTask模式举例启动Activity C任务栈已经存在C的实例并且未位于栈顶当启动Activity C 时,会将Activity C 上方所有的实例全部出栈让其位于栈顶,并且回调Activity C 中的onNewIntent()方法。任务栈不存在C的实例当启动Activit...

1、Standard 模式

首先这是一个默认的启动模式,举例: 我们想启动一个ActivityB,无论任务栈中是否存在ActivityB的实例,都会创建一个崭新的ActivityB位于栈顶。

2、SingleTask模式

举例启动Activity C

  1. 任务栈已经存在C的实例并且未位于栈顶

当启动Activity C 时,会将Activity C 上方所有的实例全部出栈让其位于栈顶,并且回调Activity C 中的onNewIntent()方法。

  1. 任务栈不存在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