几种改变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出栈。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android小菜鸡

沉浸式状态栏的封装使用

  随着用户要求的不断提高,Android版本的不断升级,沉浸式状态栏似乎已经成为了每个App的必备功能。   首先要实现它我们得先理解他,状态栏不同于标题栏...

1011
来自专栏三流程序员的挣扎

Navigation 详解二

BottomNavigationView 以更简洁的方式来实现过去的 BottomNavigationBar 的样式。Android Studio 中创建一个 ...

922
来自专栏潇涧技术专栏

Android Text View with Custom Font

本文以自定义TextView为例简单实践下如何自定义View,它能够根据设置的xml属性采用不同的字体显示文字

581
来自专栏知识分享

8-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,做自己的手机TCP客户端发信息给单片机控制小灯的亮灭)

http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接:https://pan.ba...

4192
来自专栏向治洪

android插件开发机制

插件机制实质上就是由主体程序定义接口,然后由插件去实现这些接口,以达到功能模块化。Android系统是基于Linux内核的,其安全机制也继承了Linux的特性...

2037
来自专栏everhad

安卓Task和Back Stack

概述 一个Activity允许用户完成一些操作,甚至,Android中设计Activity为组件的形式,这样,多个Activity——甚至是其它App的Acti...

1819
来自专栏Android干货

安卓开发_实现截图功能

2916
来自专栏Android先生

Android各大手机品牌手机跳转到权限管理界面

最近项目中遇到这样个需求场景:<br > 当我们的用户使用App时不小心拒绝了某项必要权限,而导致无法正常使用。这时候希望重新去打开该权限,那么问题来了,And...

861
来自专栏拭心的安卓进阶之路

Android 进阶2:Activity 的 Task 与启动模式

Android 中的 Task 是什么 我们知道,一个应用中可能有多个 Activity,而这些 Activity 被以栈的形式管理。当我们新打开 Activi...

1785
来自专栏增长技术

Android 相机功能模块相关库

Android’s video recording APIs are very difficult to figure out, especially sinc...

1091

扫码关注云+社区