Android任务栈和启动模式

Andrcid中的任务栈是一种用来存放Activity实倒的容器。任务最大的特点就是先进后出,它主要有两个基本操作,分别是压栈出栈。通常Andaid应用程序都有一个任务栈,每打开一个Activity时,该Activity就会被压入任务栈。每销毁一个Activity时,该Activity就会被弹出任务栈。用户操作的Accivity永远都是栈顶的Activisty。

无论开启多少个Activity,最后开启的Activity的实例都会被压入栈的顶端,而之前开启的Activity仍然保存在栈中,但活动已经停止,系统会保存Activety被停止时的状态。当两次回到被停止的Activity时,界面为被保存停止时的状态。

Activity启动模式有4种,分别是standand(标准),singleTop(仅一个,顶部),singleTask(仅一个,栈) 和 singleInstance(仅一个,实例)

1.standard模式

Activity的默认启动模式。每启动一个Activity就在栈顶创建一个新实例。

2.singleTop模式

该模式会判断要启动的Activity实例是否在栈顶,如果位于栈顶则直接复用,否则创建新实例。

3.singleTask模式

如果想要某个Activity在整个应用程序中只有一个实例,则需使用singleTask模式该模式会判断栈中是否存在要启动的Activity,如果存在则把上方所有实例弹出并直接使用该实例,否则创建。

4.singleInstance模式

在所有中寻找要启动的Activity,如果存在则将该栈转移到前台直接使用,如果不存在先创建一个新的任务栈并将Activity实例压入该Activity在系统中只有一个。

Activity启动模式在AndroidManifest.xml(清单文件)的对应的**<activity中的** andrid:launchMode属性设置

html 复制代码
<activity
    android:name=".MainActivity"
    android:launchMode="singleTask">
<!-- launchMode属性用于设置启动模式 !-->

</activity>
相关推荐
guestsun1 小时前
SpringBoot七大事务失效场景分析
java·spring boot·mybatis
毕设源码-邱学长7 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
兑生9 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
daidaidaiyu9 小时前
一文学习 Spring 声明式事务源码全流程总结
java·spring
xiangpanf10 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
零雲10 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
robotx13 小时前
安卓线程相关
android
左左右右左右摇晃13 小时前
Java并发——synchronized锁
java·开发语言
消失的旧时光-194313 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
sxlishaobin13 小时前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio