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启动模式说的明白一点相关推荐

  1. Android初级开发笔记-- activity启动模式的学习(1)

    第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...

  2. Android Activity 启动模式详解

    最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...

  3. 一起看看 Activity启动模式

    小程序开发教程主要介绍了Activity启动模式的相关资料 推荐(免费):小程序开发教程 前言 平常我们启动活动的时候就是直接startActivity或许并没有注意活动的启动模式,默认情况下都是以默 ...

  4. activity 启动模式_腾讯大牛:你根本不懂Activity!

    码个蛋(codeegg)第 583 次推文 作者:厘米姑娘 原文:https://www.jianshu.com/p/602b1ec4ca7a 在之前的Activity篇主要学习Activity的生命 ...

  5. activity 启动模式_Android世界:Activity的启动模式及其适用范围

    一.Activity启动模式简介 activity启动模式,可以理解为activity在任务栈(也叫"回退栈")的回退规则,即点击"back"键时,activi ...

  6. Android开发面试题之Activity启动模式讲解总结

    activity启动模式分为: Standard :默认的启动模式每次启动activity都会新建一个activity,不管是否此activity是否存在 SingleTop :栈顶复用模式,每次启动 ...

  7. Android activity启动模式

    如何正确理解和使用 Activity的4种启动模式 关于Activity启动模式的文章已经很多,但有的文章写得过于简单,有的则过于注重细节,本文想取一个折中,只关注最重要和最常用的概念,原理和使用方法 ...

  8. Android中Activity启动模式详解

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  9. Android中Activity启动模式

    Android中Activity启动模式一共是四种,这里我写一下我对其的理解: 1.standard(默认) 2.singleTop,如果某个Activity设置了该属性,且当前Activity就是这 ...

最新文章

  1. mysql单引号和双引号
  2. LogStash 中字段的排除和数据的排除
  3. linux-linux top 命令各参数详解
  4. swoole之代码热更新实现
  5. 天津科技大学计算机合资办学,天津科技大学计算机科学与信息工程学院介绍
  6. 24秒篮球计时器mulisim12.0_奥尼尔力量有多恐怖?325磅体重把整个篮球架子拦腰折断...
  7. 《团队作业第一周》五小福团队作业——UNO
  8. 【SpringBoot_ANNOTATIONS】组件注册 02 @ComponentScan 自动扫描组件 指定扫描规则
  9. Opera 首个 “重生” 版本亮相:启用全新用户界面
  10. 记一次 windows server 2012R2 上安装 MSSQL2005 及网站发布
  11. 谁说菜鸟不会数据分析python mobi_利用Python进行数据分析[azw3+epub+mobi][30.34MB]
  12. GaitSet:将步态作为序列的交叉视角步态识别
  13. 计算机图形学原理与实践 答案,知到高级计算机图形学原理与实践单元测试答案...
  14. 像素是计算机图像处理的最小单元,图像处理复习
  15. 躲猫猫正式上线“Peek-a-Boo”就是“躲猫猫”
  16. 三剑客----awk
  17. 企业 SDLC 安全生命周期管理
  18. 微信小程序ios版本连接不了服务器,微信小程序苹果手机IOS连接报网络错误解决方案...
  19. Java实现买火车票【抢票】成功率100%
  20. 2012年4月编程语言排行榜:C语言重返第一

热门文章

  1. 从链接中获取文件名及扩展名
  2. python --动态类型
  3. MySQL学习笔记——显示数据库信息
  4. scala初学之Tuple、Array、Map、文件操作入门实战
  5. Vuex状态管理方式
  6. 用计算机表白的数字,用数字表白
  7. C语言1094题目,基于visual Studio2013解决C语言竞赛题之1094纵横图
  8. 各种水龙头拆卸图解_水龙头上包卫生纸,竟有这种效果!邻居看了都想学
  9. c语言循环程序怎么编程,c语言程序(5):循环结构程序设计
  10. 【C语言笔记结构体】