现在有四个activity a,b,c,d ,设置a为标准模式,b为singletop模式 c设置singletask模式,d设置SingleInstance 模式

a启动b ,b 启动 c ,c启动d 然后d启动a ,a在启动b ,b启动c ,c再启动d

那么此时栈中有几个activity ?

当然 这些模式也可以随意设置或者启动顺序改变,问栈中有几个activity ,

在想这类问题的时候需要清除四种启动模式,在回到这个问题的时候先了解下启动模式

1 standard(默认) 默认启动模式

每次启动一个Activity都会创建一个新的实例,并放入栈顶位置。也就说会不断地新建activity实例,都放入同一个task中

2 singleTop 栈顶复用模式

如果启动的Activity已经位于任务栈的栈顶,就不会重新创建实例,而是调用onNewIntent(intent)方法。反之创建新的实例加入栈中。 解释:这个是看栈顶有没有activitiy 有的话就直接使用,没有的就和默认模式一样了,先创建一个放在栈顶,

3 singleTask栈内复用模式

只要该Activity在一个任务栈中存在,就不会重新创建新的实例。并把栈中在其之上的其他Activity Destroy掉,调用onNewIntent(intent)方法。如果不存在,创建新的实例并入栈。

解释:这个模式创建的时候会先看栈是否存在活动的实例,有的话会把该activity上的所有活动毁掉,没有的话直接创建一个

4 singleInstance单实例模式

Activity只能单独位于一个任务栈中,并且这个任务栈只存在这一个实例。

解释:这个是全局单例模式,自己还单独占一个栈,下次使用的时候直接调用即可,

这个模式一般用在系统应用中比如锁屏等,一般我们写的app中很少用到,我工作好多年从来没有设置过,好尴尬,可能自己

知识点不足,还需要多加努力学习,

清楚了这些启动模式,现在回答下刚开始的面试题

首先第一启动的时候无论设置怎么由于栈中都没有 ,所以首先会创建一个,重点就是

在来一次启动

记录下此时的栈的activity

画一个草图记录一下

a->b->c->d

之后d->a

此时c 位于栈顶 a设置的默认模式此时a会创建 如下图

之后d->a->b

此时a位于栈顶 ,b设置的栈顶模式, 但是由于栈顶不是b所以会在此创建b 如下图

之后再d->a->b->c

此时b位于栈顶,c设置的栈内复用模式 ,c会把它之上的活动销毁掉 此时如下

之后再d->a->b->c->d

此时c位于栈顶,d设置的是singleInstance 栈中有了d的存在,不会再重新创建了

效果图和上面的图一样

2次启动之后栈 中的活动有a,b,c,d

自己测试的效果如下

测试效果和自己猜测的一样,

为了验证这次我点击手机的返回键,看看效果的是否是四个activity

果然栈中此时之后四个activity,

无论这类面试题设置什么模式,细心想想,还是很简单的,这四种模式别弄错了

如果回答正确了, 有人可能换回再问

b在此启动c的时候由于c没有创建那么它怎样传递数据,

,若果你想到了,说明我上面的四种启动模式,您认真看了,没有想到可能还需要在看看

答案是onNewIntent 传递数据.,,,

andorid 启动模式面试题相关推荐

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

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

  2. Activity的四种启动模式应用场景

    在这金三银四的时间里一个哥们忽然一本正经的问我Activity的启动模式和具体的应用模式:我也一想是啊,平是不太注意结果到了 关键的时刻卡壳了,感觉未雨绸缪一下,做个记录: 一.Activity四种启 ...

  3. Activity的四种启动模式

    standard:标准的启动模式,默认启动模式.启动一个activity就会创建该activity的实例. singleTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的act ...

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

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

  5. #读书笔记 Android-Activity启动模式

    什么是Activity的启动模式?当启动一个Activity的时候,系统会创建一个实例,并把它放入到一个任务栈中,至于如何存放,就是由这个启动模式来决定的.Android系统支持多任务,所以系统中会同 ...

  6. Centos6,7默认启动模式的更改

    有时候我们想以为图形页面启动,启动后直接到图形页面,但是有时候也想启动后直接进入文本页面,我们只需要修改init即可: Centos6启动模式配置文件路径:/etc/inittab Centos7启动 ...

  7. Android入门:Activity四种启动模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在Android Manifest.xml中的标签的and ...

  8. legacy引导gpt分区_windows分区模式和启动模式(UEFI+GPT或Legacy+MBR组合)

    启动模式必须是UEFI+GPT或Legacy+MBR组合,否则无法正常安装系统,Legacy+MBR模式的电脑支持安装任意的Windows系统,无需任何修改,就能直接从低版本安装高版本系统.UEFI+ ...

  9. Android 启动模式简介

    2019独角兽企业重金招聘Python工程师标准>>> 预备知识 启动模式 standard模式(默认):只要创建了Activity实例,一旦激活该Activity,则会向任务栈中加 ...

最新文章

  1. linux POSIX 信号集,读书笔记:第10章 Posix信号量 (6)
  2. c#Struts框架理念和自制Struts框架下 复杂版
  3. HTTPS性能分析小工具HTTPStat
  4. 修改shape数据 小数位数_【数据管理】Excel实用精华
  5. 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
  6. 今天修了一个bug,关于debug日志的问题
  7. 腾讯测试岗(部分附答案)
  8. meson中自定义变量的使用
  9. c语言数学函数指数,C语言数学函数参考表
  10. 【Letcode】机器人大冒险python3实现
  11. android 遥控器配置文件,[转载]android万能遥控器之一--前言及发射部分的简单实现...
  12. mac中clion无法运行
  13. 打开桌面上计算机特别慢,如何解决Win7电脑启动慢的问题?
  14. 什么是LRUCache 和 LRUCache 实现
  15. 怎样修改git用户名、密码和邮箱?
  16. 怎么把图片拼接成长图,3招教你快速处理
  17. js 中日期转换成时间戳
  18. 2.1.太极平台框架—表单介绍与使用
  19. Tyecho 完美配置评论回复邮件提醒 的简单方法
  20. 大智慧[粉进黄出]、[买卖指标] 大智慧极品中的极品公式

热门文章

  1. 阿里云K8S容器服务的使用
  2. Docker容器的备份与恢复,Docker镜像的备份与恢复
  3. 2022-2028年中国环保设备行业投资分析及前景预测报告
  4. LeetCode简单题之数组序号转换
  5. MLIR Python绑定
  6. 为什么您应该使用基于标准的开发实践
  7. AMD Ryzen 5000‘Cezanne’APU
  8. 神经网络AI加速器技术
  9. NVIDIA深度学习Tensor Core性能解析(下)
  10. ADAS可行驶区域道路积水反光区域的识别算法