IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 栈与启动模式 -> 正文阅读

[移动开发]Android 栈与启动模式

1.Task是我们常说的任务栈,BACK Stack是返回栈
2.启动模式:
声明启动模式有两种方式
1.在Manifest文件中声明待启动的Activity的launchMode属性
2.代码中通过intent启动Activity时,设置flag

standard: 标准启动模式:
也是默认的启动模式,每次启动 Activity 都会新建一个新的实例。待启动 Activity 会进入源 Activity 所属任务栈。

singleTop: 栈顶复用模式:

待启动 Activity 已经位于源 Activity 所属的任务栈的栈顶时,不会创建新的 Activity,而是直接使用栈顶的 Activity,并回调它的 onNewIntent 方法,onCreate 和 onStart 不会被调用,直接回调 onResume 。否则的话,在栈顶创建一个新的Activity实例

singleTask:栈内复用模式:

全局单实例,首先会寻找要启动的 Activity 想要的任务栈(默认或者 taskAffinity 属性指定),如果没有找到,则创建新的任务栈并将 Activity 实例放入。如果找到了想要的任务栈,这时候要判断栈中是否已经存在该 Activity 的实例,如果已经存在,会将该 Activity 以上的其他 Activity 实例弹出,把自己放到栈顶,同样也是回调 onNewIntent 和 onResume。如果实例不存在,创建新的实例并压入栈中。

singleInstance:单实例模式

全局单实例,首次启动时会创建新的 Activity 实例,并放入一个新的任务栈中,且这个任务栈中只会有这一个实例。 后续启动不会再新建实例。

默认的 standard 模式其实已经满足大部分情况下的需求,但是 同一个 Activity 会创建多次实例 在某些情况下肯定是不合适的,返回栈也会很突兀。这时候就需要复用已经存在的 Activity 实例,所以有了 singleTop 和 singleTask 两种不同的复用方式。而 singleInstance 则更加直接,Activity 实例和任务栈都是全局唯一的。

taskAffinity
前面提到了 Activity 想要的任务栈, taskAffinity 的作用就是指定想要的任务栈。但它并不会在任何场景下都会起作用。
未显式声明 taskAffinity 的 Activity 都具有默认的任务栈,该任务栈的名称是应用包名。
当启动模式设置为 standard 或 singleTop 时,它是不起作用的。待启动的 Activity 会跟随源 Activity 的任务栈,即使你显式声明了不一样的 taskAffinity 。
当启动模式设置了 singleTask 或者singleInstance 时,它就会新建任务栈来存储待启动的 Activity 实例。

返回栈的意义:
在这里插入图片描述

任务栈和返回栈是独立存在的,用户页面的返回依赖的是返回栈,而不是任务栈。一个返回栈中可能会包含来自不同任务栈的 Activity ,以维护正确的回退栈关系。这就是返回栈存在的意义。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:10:25  更:2021-12-10 11:10:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:46:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码