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出栈。

几种改变Activity回退栈默认行为的Intent Flag的更多相关文章

  1. android学习记录(十三)Task 和 Activity 回退栈操作。

    首先说一下Task是一个什么概念吧:Task是一个包括activity的列表.没 错.简单的说就是依照启动的先后来排队的一个队列.Back Stack.就是回退栈的意思:那么有什么用?Back Sta ...

  2. Activity的启动模式及回退栈的概念

    Activity的启动模式 standard 正常模式 在创建一个新的activity的时候,直接在栈顶创建一个新的activity singleTop 顶部单个 在创建一个新的activity的时候 ...

  3. Android开发-API指南-任务和回退栈

    Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...

  4. 深入理解Activity-任务,回退栈,启动模式

    一.任务.回退栈的概念 一个任务是多个能够和用户进行交互并且能完成某种功能的activities的集合. 这些Activity被安排回退栈中,能在合适的时候被打开显示出来. 在我们使用Android手 ...

  5. Android Api Component---翻译任务和回退栈(Tasks and Back Stack)

    一个应用程序通常包括多个activity.每个activity应当环绕一个指定的用户能够运行的而且能够开启其他activity的动作种类被设计. 比如,一个emali应用程序或许有一个activity ...

  6. Android零基础入门第89节:Fragment回退栈及弹出方法

    在上一期分享的文章末尾留了一个课后作业,有去思考如何解决吗?如果已经会了那么恭喜你,如果还不会也没关系,本期一起来学习. 一.回退栈 在前面两期的示例中,当我们完成一些操作后,如果想要回到操作之前的状 ...

  7. Fragment回退栈&commit()和commitAllowingStateLoss()

    Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Ac ...

  8. Fragment 回退栈 传递参数,点击切换图片使用Fragment ListView

    Fragment回退栈  类似与Android系统为Activity维护一个任务栈,我们也可以通过Activity维护一个回退栈来保存每次Fragment事务发生的变化. 如果你将Fragment任务 ...

  9. React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈

    React Navigation 更新到版本5已经是非常完善的一套导航管理组件, 提供了Stack , Tab , Drawer 导航方式 , 那么我们应该怎样设计和组合应用他们来构建一个完美的回退栈 ...

随机推荐

  1. 关于UIScrollView属性跟方法的总结

    iOS中UIScollView的总结 在iOS开发中可以说UIScollView是所有滑动类视图的基础,包括UITableView,UIWebView,UICollectionView等等,UIScr ...

  2. zrender源码分析1:总体结构

    开始 zrender(Zlevel Render) 是一个轻量级的Canvas类库,这里是GitHub的网址 点我, 类似的类库有Kinetic.JS.EaselJS. 但貌似都没有zrender好用 ...

  3. COMET技术具体实现 结合PHP和JQUERY

    具体看代码,费话不说 PHP服务端 $mem = new RTMEM(); if(!$mem->conn()) exit('no mem server'); if(!$mem->getst ...

  4. Flink Program Guide (2) -- 综述 (DataStream API编程指导 -- For Java)

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  5. 一个js爬虫

    1. 第一个demo 2. configs详解——之成员 3. configs详解——之field 4. configs详解——之site, page和console 5. configs详解——之回 ...

  6. JavaEE Tutorials (20) - 企业应用安全入门

    20.1企业应用的基本安全任务31620.2保护企业bean安全316 20.2.1使用声明式安全保护企业bean安全318 20.2.2通过编程方式保护企业bean安全321 20.2.3传播安全身 ...

  7. 有关UNICODE、ANSI字符集和相关字符串操作

    Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需 ...

  8. getopt vs getopts

    getopt示例 #!/bin/bash aflag=no args=`getopt a: $@` ]; then echo 'Usage: ...' exit fi set -- $args ] d ...

  9. mysql SELECT FOUND_ROWS()与COUNT(*)用法区别

    在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别   SEL ...

  10. Struts2之自定义局部类型转换器、全局类型转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器  如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用 ...