Android任务栈和启动模式

Android零基础入门第77节:Activity任务栈和启动模式 Android采用任务栈的方式来管理Activity的实例,先启动的Activity压在栈底,后启动的Activity放在找顶,并通过启动模式控制Activity在任务栈中的加载情况。 阅读详情

Android任务栈

什么是任务栈:

Android任务栈又称Task,它是一种栈结构,具有后进先出的特点,用于存放Activity。且只有栈顶的Activity能与用户进行交互。在退出应用时,必须把任务栈中的Activity全部清理出栈,此时任务栈才会销毁。当然任务栈也能处于后台,此时任务栈中的Activity的状态和数据都会被保存。一个应用可以有多个任务栈。

 

Android启动模式:

Android分为4种启动模式,分别为:

1、Standard模式

2、SingleTop模式

3、SingleTask模式

4、SingleInstance模式

 

1、Standard模式(系统默认的模式)

使用这个模式,每次去启动一个Activity的时候都会创建一个新的实例,并将这个实例加入栈中。


2、SingleTop模式

又称栈顶复用模式,听这个名字我们就知道这个模式下启动新的Activity,如果有一个实例已经在栈顶时,不会创建新的Activity,而是会调用onNewIntent方法,并复用栈顶的Activity。而当我们要启动新的Activity不处于栈顶时,则会新建一个Activity实例。


此时由于MainActivity处于栈顶,所以不会创建MainActivity实例,而是复用栈顶的MainActivity实例,并调用MainActivity的onNewIntent方法,onCreate和onStart方法不会被调用。


此时OtherActivity启动MainActivity,但由于MainActivity没有处于栈顶,则会新建一个MainActivity实例。


3、SingleTask

又称栈内复用模式,这是一种单例模式,使用该模式的Activity会在启动时检查栈内是否已经存在该实例,如果存在,则会将该实例以上的Activity全部清理出栈,此时它则处于栈顶位置,并回调onNewIntent方法;如果不存在则重新创建一个新的实例。


4、SingleInstance

在singleInstance模式下,该Activity在整个android系统内存中有且只有一个实例,而且该实例单独尊享一个Task。换句话说,A应用需要启动的MainActivity 是singleInstance模式,当A启动后,系统会为它创建一个新的任务栈,然后A单独在这个新的任务栈中,如果此时B应用也要激活MainActivity,由于栈内复用的特性,则不会重新创建,而是两个应用共享一个Activity的实例。




Scheme跳转协议:

  android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。



参考:

关于任务栈和启动模式相关博客:

http://blog.youkuaiyun.com/javazejian/article/details/52071885

关于Scheme跳转协议相关博客:

http://www.cnblogs.com/whoislcj/p/5825333.html


用STM32CubeMX和HAL库,5分钟搞定TB6612驱动直流电机(附完整代码) 本文详细介绍了如何使用STM32CubeMX和HAL库快速配置TB6612驱动直流电机,包括硬件连接、CubeMX工程配置、电机驱动逻辑实现及进阶优化技巧。通过图形化工具和代码示例,即使是新手也能在5分钟内完成电机调速系统的搭建,大幅提升开发效率。 阅读详情

相关推荐

COMSOL仿真教程—激光烧蚀

本例使用二维模型,将来自激光的入射热通量模拟为金属表面上空间分布的热源,从而得到金属的烧蚀过程和瞬态温度分布。

qq_40977332的博客 2万+

Android 启动栈管理方式 (一)

其实除了启动模式,还有intent的Flag和activity在manifest中定义的其它属性也会影响activity的行为。 首先,我们必须要理解如下几个概念。 一、task(任务):这里面提到的任务与Android系统是个多任务的系统中的任务是不同的。后者更倾向于多进程和多线程来说的,而这里的任务与application(应用程序)和activity(活动)有关系。Activity就不用

挂板: 1392

ADS仿真设计平行定向耦合器学习笔记

ADS仿真设计平行定向耦合器

qq_36521926的博客 1万+

Activity四种加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop singl

2022

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤。

wyxtx的博客 5662

SAP SD信贷管理实战:从配置到风险控制的完整指南(附后台路径)

本文详细解析了SAP SD信贷管理的完整配置流程与风险控制策略,涵盖信贷控制范围设置、风险分级机制及动态控制配置。通过实战案例和后台路径指引,帮助企业实现从客户信用评估到实时监控的全流程管理,有效降低坏账风险并优化资金安全。

3a9bq4r8t2y的博客 212

Android应用启动之从Launcher拉起APP(一)

image.png 目录 Android应用启动之从Launcher拉起APP(一)Android应用启动之从Launcher拉起APP(二)Android应用启动之从Launcher拉起APP(三)Android应用启动之从Launcher拉起APP时序图 从桌面点击图标 程序的启动,一般都是从桌面点击图标开始的。 发生点击后,响应函数: protected void onClickA...

u012739527的博客 1054

DIY音乐播放器:用VS1053模块+Arduino打造你的专属MP3播放器(附完整代码)

本文详细介绍了如何使用VS1053音频解码模块与Arduino开发板,从零开始构建一个功能完备的桌面级MP3播放器。内容涵盖硬件架构设计、SPI总线共享、底层驱动编写、双缓冲区数据流管理以及用户交互实现,并提供完整的代码示例与性能优化建议,帮助创客打造高度可定制的专属音乐播放设备。

weixin_29189003的博客 286

【Android】【TaskStack】任务栈与Activity启动模式全解析

说到Activity启动模式,相信大家肯定都不模式,多少会有所接触 大多人应该都知道SingleInstance模式可以保证Activity单例,对其它模式的功能和具体使用场景应该都不是很清楚 LaunchMode的背后,其实本质上是TaskStack管理,和Activity切换管理 这里就给大家完整地讲解下关于任务栈的全部知识和原理,以及应用场景 什么是任务栈 顾名思义,任务栈就是通过一个栈的数据结构来管理一系列任务,实际上,这里的任务指的就是Activity,任务栈就是管理Activity切换的 任务栈

天天向上 Up Up Up (*^▽^*) 4938

微软Media Creation Tool 创建工具 1.3 升级:支持全新下载安装Win11 22H2 Build 22621.525

微软 Media Creation Tool 创建工具 1.3 升级:支持全新下载安装 Win11 22H2 Build 22621.525 ISO 镜像,如果今天运行使用 Media Creation Tool,则会下载 Windows 11 2022 版本 Build 22621.525,它不会向操作系统添加任何新内容,但会修复安装问题,下面来看看详细的更新内容。

zym0218的博客 4231

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

Android应用启动之从Launcher拉起APP(三)

image.png 目录 Android应用启动之从Launcher拉起APP(一)Android应用启动之从Launcher拉起APP(二)Android应用启动之从Launcher拉起APP(三)Android应用启动之从Launcher拉起APP时序图 上文中写到,写到从AMS->ZygoteServer->ActivityThread。继续承接上文。 Activity...

u012739527的博客 2529

【电动汽车再生制动控制技术(万字长文,图文并茂)】

电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。

优快云-新能源汽车研发测试专业博主 1577

Android的任务栈和启动模式的那点事情

Android的启动模式 先说说Android的启动模式,大家都不陌生,启动模式是在Android的manifest配置文件当中定义的,可以根据需要定义成以下4种不同的启动模式: standard standard模式,也是默认启动模式(如果mainifest文件中没有定义LaunchModel属性值,则默认为该启动模式),它的特征是每次调用startAc...

vv765947965的博客 264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android 任务栈和启动模式

android 任务栈和启动模式

李店店的博客 391

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android中任务栈和activity的四种启动模式

1.一个应用程序一般都是由多个activity组成的。 2.任务栈(task stack)(别名back stack后退栈) 记录存放用户开启的activity的。 3.一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。 4.任务栈的id是一个integer的数据类型 自增长的。 5.在android操作系统里面会存在多个任务栈,一个应用程

ibey0nd的专栏 1695

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android中的任务栈和启动模式的总结

1.一个应用程序一般都是由多个activity组成的。 2.任务栈(task stack)(别名backstack后退栈) 记录存放用户开启的activity的。 3.一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。 4.任务栈的id是一个integer的数据类型 自增长的。 5.在android操作系统里面会存在多个任务栈,一个应用

渴望飞翔的猪 551

activity 启动模式_Android 面试进阶指南 —— 唠唠任务栈,返回栈和启动模式

Android 面试进阶指南目录唠唠任务栈,返回栈和启动模式唠唠 Activity 的生命周期扒一扒 Context为什么不能使用 Application Context 显示 Dialog?OOM 可以被 try catch 吗?Activity.finish() 之后十秒才回调 onDestroy ? 本文永久更新地址: https://blog.youkuaiyun.com/sunluyao_/art...

weixin_39844481的博客 142

Android Activity 启动模式和任务栈

Android Activity 常用技巧 Android Activity 启动模式和任务栈 Android 页面跳转之生命周期调用顺序问题       在了解了基本的Activity的生命周期后,我们能够很好的在一个Activity上面做相关的业务。但是这是不够的,因为Android通过任务栈来保存整个APP的Activity,合理的调度任务...

weixin_34354945的博客 136

Android Activity的任务栈和四大启动模式

在安卓系统中默认每次启动一个Activity时,系统会创建一个实例,并按照先进后出的原则放入任务栈中,当我们按back键时,就会有一个activity从任务栈顶移除,重复下去,直到任务栈为空,系统就会回收这个任务栈。但是这样以来,系统多次启动同一个Activity时就会重复创建多个实例,这种做法显然不合理,为了能够优化这个问题,Android提供四种启动模式来修改系统这一默认行为。 Activity

whieenz的专栏 590

android 让dialog保持在最前_Android 面试进阶指南 —— 唠唠任务栈,返回栈和启动模式...

Android 面试进阶指南目录唠唠任务栈,返回栈和启动模式唠唠 Activity 的生命周期扒一扒 Context为什么不能使用 Application Context 显示 Dialog?OOM 可以被 try catch 吗?Activity.finish() 之后十秒才回调 onDestroy ? 本文永久更新地址: https://blog.youkuaiyun.com/sunluyao_/art...

weixin_33756596的博客 870

Android任务栈和Activity四种启动模式详解

0、dumpsys命令简介 dumpsys命令详情可以查看官方文档,这里只介绍本文用到的具体命令及参数。 在终端以下命令可以在终端输出包含“com.sahooz”的任务栈和Activity记录 adb shell dumpsys activity | grep com.sahooz 其中grep是Linux或者Mac的命令,Windows下应该是 adb shell dumpsys activity | findstr com.sahooz 输出示例(这里节选了其中一个任务栈【TaskRecord】):

1178

(转)Android学习笔记 --- android任务栈和启动模式

(转)Android学习笔记 --- android任务栈和启动模式 1、一个应用程序一般都是由多个activity组成的,任务栈(task stack),记录和存放用户开启的activity。 2、当一个应用程序被打开时,系统就会给他分配拟一个任务栈,当任务栈中所有的activity都退出的时候,任务栈就清空了。任务栈中的id是一个inte...

weixin_34284188的博客 106

Android activity任务栈和四中启动模式

activity任务栈 activity启动模式

alline_33的博客 400

Android Activity:四种启动模式,Intent Flags和任务栈

http://www.cnblogs.com/rockmilk/p/5241853.html   安卓工程师必备:205款安卓常用精品控件!先收藏着吧!http://lesscode.cn/index.php?s=/category-index-id-1.shtml   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例

qq_35521087的博客 390
上一篇: Android面试(Activity生命周期)
下一篇: Fragment相关知识点
VikcyWinner
博客等级 码龄11年 12粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值