将Activity启动模式说的明白一点
Android的四种启动模式Standard、SingleTask、SingleTop、SingleInstance及其作用这里就不讲述了,这个属于基础中的基础,我当做大家已经知道了。这里唯一可能存在疑问的就是singleInstance,所以本文通过具体的代码示例来演示不同启动模式的Activity相互跳转的时候Task栈的使用情况。
我们这里创建如下几个Activity,见名知意,他们的启动模式就和文件名是一样的。
<activity android:name=".SingleInstanceActivity2"android:launchMode="singleInstance"/><activity android:name=".SingleTopActivity"android:launchMode="singleTop"/><activity android:name=".SingleTaskActivity"android:launchMode="singleTask" /><activity android:name=".SingleInstanceActivity"android:launchMode="singleInstance" /><activity android:name=".StandardActivity"android:launchMode="standard" /><activity android:name=".MainActivity"android:launchMode="standard"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
复制代码
场景一:
MainActivity启动了是SingleInstanceActivity,然后在SingleInstanceActivity中再次启动MainActivity,此时会怎样?点击返回返回到哪儿呢?
查看task栈情况
在cmd命令行里或者Android Studio中的Terminal里敲入如下命令:
adb shell dumpsys activity
复制代码
点击返回键出栈:
我们发现,它的顺序是MainActivity->MainActivity->SingleInstanceActivity。我们可以看到规律,它是先将一个栈都清空之后再去清空第二个栈。
场景二:
MainActivity启动了是SingleInstanceActivity,然后在SingleInstanceActivity中再次启动SingleTaskActivity,此时会怎样?点击返回返回到哪儿呢?
查看task栈情况
点击返回键出栈:
我们发现,它的顺序是SingleTaskActivity->MainActivity->SingleInstanceActivity。我们可以看到规律,它是先将一个栈都清空之后再去清空第二个栈。
场景三:
MainActivity启动了是SingleInstanceActivity,然后在SingleInstanceActivity中再次启动SingleTopActivity,此时会怎样?点击返回返回到哪儿呢?
查看task栈情况
点击返回键出栈:
我们发现,它的顺序是SingleTopActivity->MainActivity->SingleInstanceActivity。我们可以看到规律,它是先将一个栈都清空之后再去清空第二个栈。
场景四:
MainActivity启动了是SingleInstanceActivity,然后在SingleInstanceActivity中再次启动SingleInstanceActivity2,然后在SingleInstanceActivity2中再次启动StandardActivity,此时会怎样?点击返回返回到哪儿呢?
查看task栈情况
点击返回键出栈:
我们发现,它的顺序是StandardActivity->MainActivity->SingleInstanceActivity2->SingleInstanceActivity。我们可以看到规律,它是先将一个栈都清空之后再去清空第二个栈,然后再去清空第三个栈。
总结:
1.Standard、SingleTask、SingleTop模式的Activity会放在同一个Task栈中,其他每一个SingleInstance会单独放在一个栈中
3.每次创建一个不同的SingleInstance模式的Activity,都会重新创建一个Task栈来放这个Activity。
3.出栈的时候看当前栈是哪个,当前栈出栈完毕之后再让第二个栈出栈。
转载于:https://juejin.im/post/5cbc8c886fb9a0687822e160
将Activity启动模式说的明白一点相关推荐
- Android初级开发笔记-- activity启动模式的学习(1)
第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...
- Android Activity 启动模式详解
最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...
- 一起看看 Activity启动模式
小程序开发教程主要介绍了Activity启动模式的相关资料 推荐(免费):小程序开发教程 前言 平常我们启动活动的时候就是直接startActivity或许并没有注意活动的启动模式,默认情况下都是以默 ...
- activity 启动模式_腾讯大牛:你根本不懂Activity!
码个蛋(codeegg)第 583 次推文 作者:厘米姑娘 原文:https://www.jianshu.com/p/602b1ec4ca7a 在之前的Activity篇主要学习Activity的生命 ...
- activity 启动模式_Android世界:Activity的启动模式及其适用范围
一.Activity启动模式简介 activity启动模式,可以理解为activity在任务栈(也叫"回退栈")的回退规则,即点击"back"键时,activi ...
- Android开发面试题之Activity启动模式讲解总结
activity启动模式分为: Standard :默认的启动模式每次启动activity都会新建一个activity,不管是否此activity是否存在 SingleTop :栈顶复用模式,每次启动 ...
- Android activity启动模式
如何正确理解和使用 Activity的4种启动模式 关于Activity启动模式的文章已经很多,但有的文章写得过于简单,有的则过于注重细节,本文想取一个折中,只关注最重要和最常用的概念,原理和使用方法 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android中Activity启动模式
Android中Activity启动模式一共是四种,这里我写一下我对其的理解: 1.standard(默认) 2.singleTop,如果某个Activity设置了该属性,且当前Activity就是这 ...
最新文章
- mysql单引号和双引号
- LogStash 中字段的排除和数据的排除
- linux-linux top 命令各参数详解
- swoole之代码热更新实现
- 天津科技大学计算机合资办学,天津科技大学计算机科学与信息工程学院介绍
- 24秒篮球计时器mulisim12.0_奥尼尔力量有多恐怖?325磅体重把整个篮球架子拦腰折断...
- 《团队作业第一周》五小福团队作业——UNO
- 【SpringBoot_ANNOTATIONS】组件注册 02 @ComponentScan 自动扫描组件 指定扫描规则
- Opera 首个 “重生” 版本亮相:启用全新用户界面
- 记一次 windows server 2012R2 上安装 MSSQL2005 及网站发布
- 谁说菜鸟不会数据分析python mobi_利用Python进行数据分析[azw3+epub+mobi][30.34MB]
- GaitSet:将步态作为序列的交叉视角步态识别
- 计算机图形学原理与实践 答案,知到高级计算机图形学原理与实践单元测试答案...
- 像素是计算机图像处理的最小单元,图像处理复习
- 躲猫猫正式上线“Peek-a-Boo”就是“躲猫猫”
- 三剑客----awk
- 企业 SDLC 安全生命周期管理
- 微信小程序ios版本连接不了服务器,微信小程序苹果手机IOS连接报网络错误解决方案...
- Java实现买火车票【抢票】成功率100%
- 2012年4月编程语言排行榜:C语言重返第一