当前位置: 移动技术网 > 移动技术>移动开发>Android > 重学Android之启动模式

重学Android之启动模式

2020年07月23日  | 移动技术网移动技术  | 我要评论
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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网