以前对于Activity的启动模式只限于文字说明理解的层面,但最近的一个问题让我对启动模式有了更深的了解。

Activity有四大启动模式:standard,singleTop,singleTask,singleInstance,这些启动模式的特点就不在这里细说,主要说一下SingleInstance这种启动模式的Activity启动其它模式的Activity的效果与可能出现的问题:

问题是这么描述的,A栈最顶层的一个Activity启动了一个启动模式为SingleInstance的Activity-B,那么如果B启动一个启动模式为standard的Activity-C,那么C会出现在哪个栈?是A上面还是B,还是建一个新栈C?

今天我就被这种情况给困住了,因为我无意中造成了这种情况:B一旦启动C,则A也会被带出来,我在执行回退操作的时候的顺序是C->A,不见了B栈中的Activity对象,我刚开始以为是B或者C无意中启动了A最顶层的对象并消失,但是后来发现我在退出程序的时候发现B栈中的对象B中会报错,我猜B对象可能在程序退出的时候还存活,只是它没有存在于正常的回退栈中。如下图所示:

对于B消失的这种情况,建议将启动模式改为SingleTask,B启动C之后,C位于B栈内,回退也是正常流程,如果B设置为了SingleInstance,则会出现意料之外的问题,很难找到病症。

由Actvity启动模式之SingleInstance引起的坑的反思相关推荐

  1. android singleinstance home,Android启动模式之singleinstance的坑

    前言 在实际应用中,使用singleinstance启动模式时,会遇到一些奇奇怪怪的问题.Android有四种启动模式,分别是standard,singleTop,singleTask,singleI ...

  2. Android启动模式SingleInstance

    1.简介 Android四大启动模式分别为Standard,SingleTop,SingleTask,SingleInstance,其中前面三种平时使用的比较多此处不多做解析,重点分析下SingleI ...

  3. Activity 启动模式以及常见的启动Flag

    提前致谢:感谢广大互联网大佬记录知识借鉴. 一.Activity的4种启动模式: 1.android:launchMode="standard" 标准启动模式.这种启动模式也是Ac ...

  4. 【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )

    文章目录 一. 安卓应用任务栈管理 二. 任务与返回堆栈回顾 三. 返回堆栈清除 四. 关于亲和性回顾 五. Activity 启动模式 LaunchMode 补充 ( standard | sing ...

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

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

  6. android任务栈的作用,Android 启动模式以及任务栈

    1.Android 主要包含4种启动模式,下面分别介绍四种启动方式的特点: 1)tandard 默认的启动模式,标准模式 每开启一个Activity,就会在栈顶添加一个Activity实例.多次间隔或 ...

  7. Android学习之基础知识四-Activity活动7讲(活动的启动模式)

    在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...

  8. Activity的四种启动模式-图文并茂

    1.对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例. 例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示 2. ...

  9. Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧

    文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...

最新文章

  1. 人们需要更美观的数据中心
  2. Hibernate的generator属性之意义【转】
  3. 博士生传给硕士生的经验
  4. 软件测试团队分为哪些人员,产品团队、开发团队和测试团队是什么关系?
  5. mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名
  6. 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验
  7. gef 图形 如何禁止修改大小
  8. ppt怎么一次性改全部字体_PPT的字体怎么选择?
  9. 网络性能测试之pathrate的安装使用
  10. 3D打印革命性升级!只要光照几十秒,完美雕像浮出水面丨Science
  11. 使用sql语句查询access数据库
  12. Latex符号与公式集合
  13. Office操作技巧——利用Excel实现文件夹批量重命名
  14. Python小白的数学建模课-20.网络流优化案例
  15. 设计一个小型的物联网应用系统_点赞 | 面向能源物联网的智能传感芯片设计与应用...
  16. 陆奇:创业必知的10大驱动力,让你成为水塘中最大的鱼
  17. mysql engine ndb_ndbcluster引擎表同步到innodb引擎报错Error 'Unknown storage engine 'ndbcluster'...
  18. 数据结构与算法:B树(B-Tree)定义及搜索、插入、删除基本操作
  19. UMI绝对定量转录组+代谢组联合研究β-葡萄糖苷酶抑制剂在草菇采后贮藏中的应用前景
  20. 线性代数笔记(6) 矩形的相似——标准型与约当标准型及求法

热门文章

  1. wireshark抓包工具的使用及分析
  2. 下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了
  3. C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!
  4. 想领取开发套件,就来参加AIoT开发者大赛
  5. Android init.rc 服务启动不成功
  6. 人大计算机在职考研好考吗,人大在职研究生好考吗?通过率高吗?
  7. java时间戳版本号_maven 自动编译版本号 buildnumber-maven-plugin 1.4
  8. python3 numpy中矩阵np.dot(a,b)乘法运算
  9. 一、PHP框架Laravel——入门和安装
  10. LeetCode 2050. 并行课程 III(拓扑排序)