【鹅厂修炼日记(0.1)】几种改变Activity回退栈默认行为的Intent Flag

FLAG_与LaunchMode相比最大的不同是临时性

1.FLAG_ACTIVITY_NEW_TASK:

Developer.android.com的说法:

(1)在新的task中启动这个Activity,

(2)如果已有一个task包含这个Activity,则这个task被带到前台。

(3)效果与SingleTask相同。

实验发现,只有从外部(另外的App)启动Activity,并添加FLAG_ACTIVITY_NEW_TASK标识时,表现才与上述相符;

但不具有singleTask的clear_top效果。

而在同一个APP启动Activity并添加FLAG_ACTIVITY_NEW_TASK时,与不添加标识效果一样,不仅不会新建task,而且新建的Activity不具有唯一性,与singleTask不完全相同。

在同一App内启动Activity时,如果将new_task和multi_task组合使用,就会达到打开新task的效果。

2.FLAG_ACTIVITY_SINGLE_TOP

打开的Activity如果在栈顶,则不创建新的实例,并且会触发onNewIntent事件。

与启动launchMode为SINGLE_TOP的Activity一致。

3.FLAG_ACTIVITY_CLEAR_TOP

Developer.android.com的说法:

(1)如果当前task包含这个Activity,这个Activity以上的Activity出栈,这个Activity到达栈顶。

(2)如果这个Activity是standard模式,这个Activity也出栈,并且重新实例化到达栈顶。

默认行为应该是清除包括这个Activity及其以上Activity的所有Activity,但如果为要启动的Activity设置了特殊的launchMode,则launchMode会影响这个Activity的销毁与否,即:

如果这个Activity是singleTop或singleTask模式,这个Activity不出栈。

singleInstance模式没有CLEAR_TOP的意义,因为它的task中只有自己一个Activity。

4.FLAG_ACTIVITY_REORDER_TO_FRONT

如果当前task中包含这个Activity,这个Activity被拉到栈顶,其他Activity的顺序不变,仍在task中。如果这个Activity被设置为SingleTask或者打开这个Activity的时候,还添加了CLEAR_TOP的标签,则会将这个Activity上面的Activity出栈。

时间: 2024-10-05 06:17:48

【鹅厂修炼日记(0.1)】几种改变Activity回退栈默认行为的Intent Flag的相关文章

【鹅厂修炼日记0.4】Activity篇章参考

进鹅厂做安卓开发实习,给了一份看起来超简单的培训计划,没想到第一个部分就搞了这么久, 导师超牛逼,严谨逻辑强经验丰富, 小组里一天到晚都是开发的氛围,吃饭讨论的东西也离不开代码. 总之,要跟着老大们好好混. 更重要的是一种工作态度:全面,深入,简洁,协作. 附上学习这部分知识的时候收集的一些比较好的链接: Task and backStack|Android Developer adb shell dumpsys activity 单个apk多进程 Activity, Service,Task,

【鹅厂修炼日记0.3】Task和backStack

 对Task和backStack的认识过程 1.由demo测试得到的关系图: 1.一个task中可以有多个app的Activity, 由于一个app可以对应一个或多个process, 2.所以一个task也可以对应多个process. 2.由adb shell dumpsys activity测试得到的关系图: 1.Android将所有的task维护在Main stack中, 2.每个task由TaskId唯一标识,在Hist中包含了处于同一个task内的Activity, 3.不同的proce

【鹅厂修炼日记(0)】Activity四种launchMode

1.Standard 默认模式,多次实例化,按序入栈出栈. 2.SingleTop 栈顶Activity不会被重复创建,会触发onNewIntent()事件,不在栈顶时可以多次实例化. 3.SingleTask Developer.android.com的说法: (1)新建一个task,创建一个Activity: (2)如果存在一个不同的task包含这个Activity的实例,会切换到这个task,将这个Activity以上的Activity弹出,并且触发这个Activity的onNewInte

鹅厂bugly应用升级不能安装(Android7.0的新变化)

app升级是每一个android应用的标配了,大部分应用都会有升级提醒和apk下载安装(如果系统允许静默安装估计就没有提醒这段了). 以前的升级是自己写http下载或者通过系统提供的DownloadManager进行下载.无意间发现bugly提供下载更新服务而且免费(后来又提供了热更新),就乐呵呵的接入了sdk,毕竟是大厂的东西,值得信赖.开始用的时候用的很稳定(估计是手机厂商还没用上牛轧糖),后来就有人反应更新失败,一直提示安装,开始有些不相信直接让用户卸载重装(还好用户是公司自己人,是外人的

Python全栈修炼日记之一:编程语言的介绍

Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序. Python 是面向对象语言: 这意味着Python支持面向对象的风格

鹅厂前端面试小题

鹅厂前端面试 1.有代码如下 function test2(){ return 25; }; console.log(typeof test2()) 问题:写出此时打印出的值       number 2.现有代码如下: var name='aaa'; var obj={ name:'bbb', dose:function(){ this.name='ccc'; } }; var does=obj.dose; does(); console.log(obj.name): 问题:写出此时打印的值

鹅厂前员工稍微谈谈腾讯

http://blog.sina.com.cn/s/blog_631d3a630102uzrv.html 发信人: guranzon (guranzon), 信区: WorkLife 标  题: 鹅厂前员工稍微谈谈腾讯 发信站: 北邮人论坛 (Fri Aug  8 23:56:16 2014), 站内 首先说一下待遇吧,这个也是大家最关心的.我是10年本科毕业入职的,今年拿完年终奖跑路的,现在在一家创业公司混日子.当时的offer是本6600*15.3=10w硕8500*15.3=13w这个待遇

do while(0) 的几种用法

do while(0) 的三种用法 一.和break一起使用. 避免使用goto语句来减少代码冗余. 二.在宏定义中,do while中的大括号可以将do 后面的语句限定到一个域内,避免宏使用时的编译错误. 三.声明一个空宏. 今天太累了,改天具体补充.

ORACLE SQL前端补0的三种方式。

前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00000000'||sal,-8) from emp;