andorid 启动模式面试题
现在有四个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 启动模式面试题相关推荐
- Android开发面试题之Activity启动模式讲解总结
activity启动模式分为: Standard :默认的启动模式每次启动activity都会新建一个activity,不管是否此activity是否存在 SingleTop :栈顶复用模式,每次启动 ...
- Activity的四种启动模式应用场景
在这金三银四的时间里一个哥们忽然一本正经的问我Activity的启动模式和具体的应用模式:我也一想是啊,平是不太注意结果到了 关键的时刻卡壳了,感觉未雨绸缪一下,做个记录: 一.Activity四种启 ...
- Activity的四种启动模式
standard:标准的启动模式,默认启动模式.启动一个activity就会创建该activity的实例. singleTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的act ...
- activity 启动模式_腾讯大牛:你根本不懂Activity!
码个蛋(codeegg)第 583 次推文 作者:厘米姑娘 原文:https://www.jianshu.com/p/602b1ec4ca7a 在之前的Activity篇主要学习Activity的生命 ...
- #读书笔记 Android-Activity启动模式
什么是Activity的启动模式?当启动一个Activity的时候,系统会创建一个实例,并把它放入到一个任务栈中,至于如何存放,就是由这个启动模式来决定的.Android系统支持多任务,所以系统中会同 ...
- Centos6,7默认启动模式的更改
有时候我们想以为图形页面启动,启动后直接到图形页面,但是有时候也想启动后直接进入文本页面,我们只需要修改init即可: Centos6启动模式配置文件路径:/etc/inittab Centos7启动 ...
- Android入门:Activity四种启动模式
2019独角兽企业重金招聘Python工程师标准>>> 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在Android Manifest.xml中的标签的and ...
- legacy引导gpt分区_windows分区模式和启动模式(UEFI+GPT或Legacy+MBR组合)
启动模式必须是UEFI+GPT或Legacy+MBR组合,否则无法正常安装系统,Legacy+MBR模式的电脑支持安装任意的Windows系统,无需任何修改,就能直接从低版本安装高版本系统.UEFI+ ...
- Android 启动模式简介
2019独角兽企业重金招聘Python工程师标准>>> 预备知识 启动模式 standard模式(默认):只要创建了Activity实例,一旦激活该Activity,则会向任务栈中加 ...
最新文章
- linux POSIX 信号集,读书笔记:第10章 Posix信号量 (6)
- c#Struts框架理念和自制Struts框架下 复杂版
- HTTPS性能分析小工具HTTPStat
- 修改shape数据 小数位数_【数据管理】Excel实用精华
- 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
- 今天修了一个bug,关于debug日志的问题
- 腾讯测试岗(部分附答案)
- meson中自定义变量的使用
- c语言数学函数指数,C语言数学函数参考表
- 【Letcode】机器人大冒险python3实现
- android 遥控器配置文件,[转载]android万能遥控器之一--前言及发射部分的简单实现...
- mac中clion无法运行
- 打开桌面上计算机特别慢,如何解决Win7电脑启动慢的问题?
- 什么是LRUCache 和 LRUCache 实现
- 怎样修改git用户名、密码和邮箱?
- 怎么把图片拼接成长图,3招教你快速处理
- js 中日期转换成时间戳
- 2.1.太极平台框架—表单介绍与使用
- Tyecho 完美配置评论回复邮件提醒 的简单方法
- 大智慧[粉进黄出]、[买卖指标] 大智慧极品中的极品公式