Mr_老冷 发表于 2023-11-15 14:23:07

【Android】安卓Activity的几种静态设置启动模式

1.默认启动模式 standard
该模式可以被设定,不在 manifest 设定时候,Activity 的默认模式就是 standard。
在该模式下,启动的 Activity 会依照启动顺序被依次压入 Task 栈中:


2.栈顶复用模式 singleTop
在该模式下,如果栈顶 Activity 为我们要新建的 Activity(目标Activity),那么就不会重复创建新的Activity。


应用场景
适合开启渠道多、多应用开启调用的 Activity,通过这种设置可以避免已经创建过的 Activity 被重复创建,多数通过动态设置使用。

3.栈内复用模式 singleTask
与 singleTop 模式相似,只不过 singleTop 模式是只是针对栈顶的元素,
而 singleTask 模式下,如果task 栈内存在目标 Activity 实例,则将 task 内的对应 Activity 实例之上的所有 Activity 弹出栈,并将对应 Activity 置于栈顶,获得焦点


应用场景
程序主界面:我们肯定不希望主界面被创建多次,而且在主界面退出的时候退出整个 App 是最好的效果。
耗费系统资源的Activity
对于那些及其耗费系统资源的 Activity,我们可以考虑将其设为 singleTask模式,减少资源耗费。

4.全局唯一模式 singleInstance
在该模式下,我们会为目标 Activity 创建一个新的 Task 栈,将目标 Activity 放入新的 Task,并让目标Activity获得焦点。
新的 Task 有且只有这一个 Activity 实例。
如果已经创建过目标 Activity 实例,则不会创建新的 Task,而是将以前创建过的 Activity 唤醒。

看一个示例,Activity3 设置为singleInstance,Activity1 和 Activity2 默认(standard),
下图程序流程中,黄色的代表 Background 的Task,蓝色的代表 Foreground 的Task。
返回时会先把 Foreground 的Task 中的 Activity 弹出,直到 Task 销毁,然后才将 Background的 Task 唤到前台,所以最后将Activity3 销毁之后,会直接退出应用。





【安卓】Android Intent FLAG标志位解释
http://bbs.laoleng.vip/thread-502-1-1.html
(出处: 老冷编程学院)


页: [1]
查看完整版本: 【Android】安卓Activity的几种静态设置启动模式