文档章节

关于Activity的launchMode面试题

渊泉如渊
 渊泉如渊
发布于 2019/02/15 16:43
字数 1095
阅读 313
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

如果假设A是Standard,B是SingleTop,C是SingleTask,D是SingleInstance的启动模式,那么以A->B->C->D->A->B->C->D这种情况开启Activity,分析一下最后的工作栈是怎样的情况,第二次的A是和ABC在同一个工作栈中还是和第一次的D在同一个工作栈中.

这是在刚哥的小密圈中,一个球友提问的。仔细看了,球员的解答,和自己的想法不同;于是在闲暇的时间又阅读了一遍Activity的四大启动模式,这里不在详细解读,请看彻底弄懂Activity四大启动模式 ,这个介绍比较清楚。

下面把结果公布,经测试有两种情况:一种SingleTask未设置taskAffinity,A、B、C在同一个工作栈中:

Task id #1844
  * TaskRecord{7f90b08 #1844 A=com.example.demo U=0 sz=1}
    * Hist #0: ActivityRecord{1ac3bbd5 u0 com.example.demo/.SingleInstanceActivity t1844}
Task id #1843
  * TaskRecord{34b46cc6 #1843 A=com.example.demo U=0 sz=3}
    * Hist #2: ActivityRecord{28c92660 u0 com.example.demo/.SingleTaskActivity t1843}
    * Hist #1: ActivityRecord{70f2f65 u0 com.example.demo/.SingleTopActivity t1843}
    * Hist #0: ActivityRecord{221e98a u0 com.example.demo/.MainActivity t1843}

下面是日志打印情况:

02-15 16:36:55.369 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:36:55.370 25135-25135/com.example.demo I/BaseActivity: onCreate: MainActivity, taskId: 1843, hashCode: 664113674
02-15 16:36:55.371 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:44.558 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:38:44.558 25135-25135/com.example.demo I/BaseActivity: onCreate: SingleTopActivity, taskId: 1843, hashCode: 359362156
02-15 16:38:44.559 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:47.315 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:38:47.315 25135-25135/com.example.demo I/BaseActivity: onCreate: SingleTaskActivity, taskId: 1843, hashCode: 13302767
02-15 16:38:47.316 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:48.693 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:38:48.695 25135-25135/com.example.demo I/BaseActivity: onCreate: SingleInstanceActivity, taskId: 1844, hashCode: 643766463
02-15 16:38:48.696 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:50.879 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:38:50.880 25135-25135/com.example.demo I/BaseActivity: onCreate: MainActivity, taskId: 1843, hashCode: 237435118
02-15 16:38:50.881 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:52.497 25135-25135/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 16:38:52.498 25135-25135/com.example.demo I/BaseActivity: onCreate: SingleTopActivity, taskId: 1843, hashCode: 249760441
02-15 16:38:52.498 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:53.315 25135-25135/com.example.demo I/BaseActivity: *****onNewIntent()*****
02-15 16:38:53.316 25135-25135/com.example.demo I/BaseActivity: onNewIntent: SingleTaskActivity, taskId: 1843, hashCode: 13302767
02-15 16:38:53.317 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 16:38:56.931 25135-25135/com.example.demo I/BaseActivity: *****onNewIntent()*****
02-15 16:38:56.932 25135-25135/com.example.demo I/BaseActivity: onNewIntent: SingleInstanceActivity, taskId: 1844, hashCode: 643766463
02-15 16:38:56.933 25135-25135/com.example.demo I/BaseActivity: taskAffinity: com.example.demo

一种SingleTask设置taskAffinity,A、B和C不在同一个工作栈中,下面是工作栈情况:

Task id #1841
  * TaskRecord{2460d850 #1841 A=com.example.demo U=0 sz=1}
    * Hist #0: ActivityRecord{20da0b54 u0 com.example.demo/.SingleInstanceActivity t1841}
Task id #1840
  * TaskRecord{454ef4e #1840 A=com.example.demo.singleTask U=0 sz=1}
    * Hist #0: ActivityRecord{1a0ba3ea u0 com.example.demo/.SingleTaskActivity t1840}
Task id #1839
  * TaskRecord{1d67d86f #1839 A=com.example.demo U=0 sz=4}
    * Hist #3: ActivityRecord{2005c3b4 u0 com.example.demo/.SingleTopActivity t1839}
    * Hist #2: ActivityRecord{25154369 u0 com.example.demo/.MainActivity t1839}
    * Hist #1: ActivityRecord{1a361492 u0 com.example.demo/.SingleTopActivity t1839}
    * Hist #0: ActivityRecord{20a0bb43 u0 com.example.demo/.MainActivity t1839}

下面是日志打印情况:

02-15 15:54:56.949 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:54:56.965 22944-22944/com.example.demo I/BaseActivity: onCreate: MainActivity, taskId: 1839, hashCode: 664113674
02-15 15:54:56.966 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 15:55:24.121 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:55:24.122 22944-22944/com.example.demo I/BaseActivity: onCreate: SingleTopActivity, taskId: 1839, hashCode: 6742393
02-15 15:55:24.122 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 15:55:27.991 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:55:27.991 22944-22944/com.example.demo I/BaseActivity: onCreate: SingleTaskActivity, taskId: 1840, hashCode: 163004873
02-15 15:55:27.992 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo.singleTask
02-15 15:55:31.177 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:55:31.178 22944-22944/com.example.demo I/BaseActivity: onCreate: SingleInstanceActivity, taskId: 1841, hashCode: 13155865
02-15 15:55:31.179 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 15:55:35.587 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:55:35.587 22944-22944/com.example.demo I/BaseActivity: onCreate: MainActivity, taskId: 1839, hashCode: 109388016
02-15 15:55:35.589 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 15:55:38.907 22944-22944/com.example.demo I/BaseActivity: *****onCreate()*****
02-15 15:55:38.908 22944-22944/com.example.demo I/BaseActivity: onCreate: SingleTopActivity, taskId: 1839, hashCode: 300899587
02-15 15:55:38.908 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
02-15 15:55:43.743 22944-22944/com.example.demo I/BaseActivity: *****onNewIntent()*****
02-15 15:55:43.744 22944-22944/com.example.demo I/BaseActivity: onNewIntent: SingleTaskActivity, taskId: 1840, hashCode: 163004873
02-15 15:55:43.745 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo.singleTask
02-15 15:55:47.884 22944-22944/com.example.demo I/BaseActivity: *****onNewIntent()*****
02-15 15:55:47.885 22944-22944/com.example.demo I/BaseActivity: onNewIntent: SingleInstanceActivity, taskId: 1841, hashCode: 13155865
02-15 15:55:47.885 22944-22944/com.example.demo I/BaseActivity: taskAffinity: com.example.demo
渊泉如渊

渊泉如渊

粉丝 7
博文 34
码字总数 26116
作品 0
郑州
Android工程师
私信 提问
加载中
请先登录后再评论。
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
662
1
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.2K
1
首列固定的列表

实现特殊的表格(UITableView)效果:即表格中的首列固定不动,而每一行除了首列均可左右拖动,以展现每一行更多内容。 作者谭林江(@无法越狱的痛)说:去益盟面试回来,感觉聊得有点郁闷,...

匿名
2013/01/24
1.3K
0
Android3D应用与游戏开发框架--JQGL

JQGL 是一款针对Android设备上3D应用、游戏的开发框架。 核心功能是OpenGL-ES的使用框架,相对于大部分开发者而已,OpenGL是陌生的,没有专门研究无法进行相关的开发。 本框架针对于Android...

Jping
2013/02/21
1.6K
0
Android-PanesLibrary

Android-PanesLibrary 可以让你非常轻松的创建原生的带多个面板的平板布局的 Android 应用。包括一个滑动菜单和内容面板,在平板上菜单和多个面板一起显示。 下图是用该组件开发的一个应用:...

匿名
2013/03/28
6.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了

前言 哈喽,大家好,我是asong,这是我的第八篇原创文章。听说你们还不会jwt、swagger,所以我带来一个入门级别的小项目。实现用户登陆、修改密码的操作。使用GIN(后台回复Golang梦工厂:g...

sunsong2020
今天
0
0
python合并excel的多个sheet

简介 因为,每天都会有的大量excel报表汇总处理任务,所以写了一个脚本来处理。 就是找出每一个excel中特定的sheet,把这些sheet的特定列读取出来合并到一个sheet中。 因为每一个sheet的数据...

trayvon
16分钟前
0
0
如何设计一个幂等接口

什么叫幂等接口 幂等性,就是只多次操作的结果是一致的。这里可能有人会有疑问。 问:为什么要多次操作结果都一致呢?比如我查询数据,每次查出来的都一样,即使我修改了每次查出来的也都要一...

贪挽懒月
昨天
0
0
华为阿里下班时间曝光:所有的光鲜,都有加班的味道

点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 来源:GitHubPorn 声明:本文由HR人力资源成长俱乐部整理发布。素材来源程序员之家。如需转载,请务必注明以上信息,侵权必究...

zeroing1
08/06
0
0
Proguard 常用规则

入口 为了决定哪些代码要被保留哪些代码要出丢弃和混淆,必须指定入口点。这些入口点通常是 main方法,activity,service等。 在压缩阶段,Proguard从这些入口点开始递归确定哪些类或类成员要...

佛系编码
23分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部