由Actvity启动模式之SingleInstance引起的坑的反思
以前对于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引起的坑的反思相关推荐
- android singleinstance home,Android启动模式之singleinstance的坑
前言 在实际应用中,使用singleinstance启动模式时,会遇到一些奇奇怪怪的问题.Android有四种启动模式,分别是standard,singleTop,singleTask,singleI ...
- Android启动模式SingleInstance
1.简介 Android四大启动模式分别为Standard,SingleTop,SingleTask,SingleInstance,其中前面三种平时使用的比较多此处不多做解析,重点分析下SingleI ...
- Activity 启动模式以及常见的启动Flag
提前致谢:感谢广大互联网大佬记录知识借鉴. 一.Activity的4种启动模式: 1.android:launchMode="standard" 标准启动模式.这种启动模式也是Ac ...
- 【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )
文章目录 一. 安卓应用任务栈管理 二. 任务与返回堆栈回顾 三. 返回堆栈清除 四. 关于亲和性回顾 五. Activity 启动模式 LaunchMode 补充 ( standard | sing ...
- Android初级开发笔记-- activity启动模式的学习(1)
第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...
- android任务栈的作用,Android 启动模式以及任务栈
1.Android 主要包含4种启动模式,下面分别介绍四种启动方式的特点: 1)tandard 默认的启动模式,标准模式 每开启一个Activity,就会在栈顶添加一个Activity实例.多次间隔或 ...
- Android学习之基础知识四-Activity活动7讲(活动的启动模式)
在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...
- Activity的四种启动模式-图文并茂
1.对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例. 例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示 2. ...
- Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧
文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...
最新文章
- 人们需要更美观的数据中心
- Hibernate的generator属性之意义【转】
- 博士生传给硕士生的经验
- 软件测试团队分为哪些人员,产品团队、开发团队和测试团队是什么关系?
- mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名
- 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验
- gef 图形 如何禁止修改大小
- ppt怎么一次性改全部字体_PPT的字体怎么选择?
- 网络性能测试之pathrate的安装使用
- 3D打印革命性升级!只要光照几十秒,完美雕像浮出水面丨Science
- 使用sql语句查询access数据库
- Latex符号与公式集合
- Office操作技巧——利用Excel实现文件夹批量重命名
- Python小白的数学建模课-20.网络流优化案例
- 设计一个小型的物联网应用系统_点赞 | 面向能源物联网的智能传感芯片设计与应用...
- 陆奇:创业必知的10大驱动力,让你成为水塘中最大的鱼
- mysql engine ndb_ndbcluster引擎表同步到innodb引擎报错Error 'Unknown storage engine 'ndbcluster'...
- 数据结构与算法:B树(B-Tree)定义及搜索、插入、删除基本操作
- UMI绝对定量转录组+代谢组联合研究β-葡萄糖苷酶抑制剂在草菇采后贮藏中的应用前景
- 线性代数笔记(6) 矩形的相似——标准型与约当标准型及求法
热门文章
- wireshark抓包工具的使用及分析
- 下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了
- C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!
- 想领取开发套件,就来参加AIoT开发者大赛
- Android init.rc 服务启动不成功
- 人大计算机在职考研好考吗,人大在职研究生好考吗?通过率高吗?
- java时间戳版本号_maven 自动编译版本号 buildnumber-maven-plugin 1.4
- python3 numpy中矩阵np.dot(a,b)乘法运算
- 一、PHP框架Laravel——入门和安装
- LeetCode 2050. 并行课程 III(拓扑排序)