使用Intent的Flag设置启动参数

Intent中关于激活Activity的Flag

Intent类定义了一批常量,用于配置激活Activity时的相关参数;

在Intent中设置Flag

·调用Intent的setFlags()或addFlags()可配置Intent的Flag属性

属性值介绍:

FLAG_ACTIVITY_NEW_TASK

·尝试开启新的Task,可能产生的效果:

(1)如果当前已有Task与尝试激活的Activity的taskAffinity相同,则在该Task中直接压栈,

被激活的Activity获得栈顶位置;

(2)如果当前没有Task与尝试激活的Activity的taskAffinity相同,则创建新的Task

且被激活的Activity获得栈顶位置。

例如:

·App1中存在ActivityA与ActivityB,当前ActivityA已经激活,通过APP2

激活App1的ActivityB,回到桌面并点击App1的图标,会直接显示ActivityB,在整个过程中,App1

的2个Activity的Task ID相同,App2的Activity是另一个Task ID。

FLAG_ACTIVITY_CLEAR_TASK

·清空被激活的Activity应该归属的Task,且被激活的Activity添加到该Task中获得栈顶位置

·该Flag应该与FLAG_ACTIVITY_NEW_TAST一起使用

FLAG_ACTIVITY_SINGLE_TOP

·位于栈顶是唯一,其特性可参考将<activity>中launchMode属性配置为singleTop

但是区别在于:Flag设置比较活,可以动态的设置,而launchMode设置比较死

FLAG_ACITVITY_CLEAR_TOP

·清除顶部,可能产生的效果:

·情景1:当Intent尝试激活Activity的实例在Task中不存在时,创建该Activity的实例,并

获得栈顶位置;

情景2:如果该Activity的实例已经存在,则清除Task中该实例之上的所有Activity,且

获得栈顶位置;

情景3:在情景2的基础上,如果该Activity的launchMode属性不是

singleTask或singleInstance时,该Activity原本存在的实例也会被移除,位于栈顶的是新创建的该Activity的实例

FLAG_ACTIVITY_CLEAR_WHEA_TASK_RESET

·当Task被Reset时,清除该Activity及在Task中位于该Activity之上的所有Activity

·当Task被置于后台,且重新被置于前台时,则可能被Reset(由系统添加FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),

通常通过点击应用程序图标回到前台时会Reset,而通过任务列表则不会。

FLAG_ACTIVITY_NO_HISTORY

。当Activity被置于后台之后,是否将其从Back Stack中清除并结束,其特性可参考<activity>的noHistory属性

时间: 2024-10-13 05:50:42

使用Intent的Flag设置启动参数的相关文章

C#控制台基础 VS2017中为控制台程序设置启动参数(string[] args)

os :windows7_x64 ide:vs2017 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { foreach (var str in args) {

设置启动参数:禁用密码保存

禁用密码保存: options = webdriver.ChromeOptions() prefs = {"":""} prefs["credentials_enable_service"] = False prefs["profile.password_manager_enabled"] = False options.add_experimental_option("prefs", prefs) dri

OutOfMemoryError:修改tomcat启动参数

tomcat运行有时候会遇到两个OOM错误,这两个错误如果不是因为程序内存泄漏原因造成,则可以通过设置启动参数来处理: 1.java.lang.OutOfMemoryError:Java heap space 可以通过设置启动参数处理:-Xms1024m -Xmx1024m 2.java.lang.OutOfMemoryError: PermGen space 可以通过设置启动参数处理:-XX:PermSize=256m -XX:MaxPermSize=512m 设置方法: 1.以windows

SpringBoot(三):springboot启动参数

springboot默认启动入口函数是支持接收参数,并且在整个应用程序内部也可以获取到这些参数,并且如果传递的参数是一些内部定义的参数将会被映射到springboot内部配置项,从而达到配置效果. springboot入口参数传递与获取: 方式1)springboot 配置项目启动传递参数: a)在idea导航Run->Edit Configuration... b)Edit Configuration...下设置启动参数: c)修改SpringBoot启动入口函数: package app;

Activity启动模式及Intent的Flag属性对Intent传值的影响

前些时候在支援公司其它部门项目开发的时候,有同事问我:通过Intent在Activity之间进行数据传递,传递的Key和获取的Key都没错,为什么在目标Activity会获取不到传递过来的数据?在Key没错的情况下获取不到数据,那么无疑是Activity的启动模式及在跳转时给Intent设置的Flag属性引起的,于是乎有了今天这篇博客. 原因一:Activity的启动模式 那么Activity以哪种启动模式进行跳转时,会导致目标Activity获取不到传递过来的数据呢?在上一篇Activity启

Activity的任务栈Task以及启动模式与Intent的Flag详解

什么是任务栈(Task) 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中. 其实就是以栈的结构(先进后出)将依次打开的activity记录. 为什么要用任务栈 为了记录用户开启了那些activity,记录这些activity开启的先后顺序,google引入任务栈(task stack)概念,帮助维护好的用户体验. 如何查看当前系统的任务栈 手机中 --> 长按home或者多任务键会进到 

Uboot启动参数设置

原文地址:Uboot启动参数设置 作者:luozhiyong131 配置uboot并运行Linux(tftp 和NFS 服务的使用) 在开发调试中建议使用tftp服务下载内核和NFS启动文件系统,这样方便调试 1)配置板子的 IP 地址: > setenv ipaddr 192.168.2.44 2) 配置板子的 Linux 服务器地址: > setenv serverip 192.168.2.202 3) 配置启动参数,设置为从 NFS 文件系统启动 setenv bootargs mem=

通过nfs网络文件系统启动tiny6410开发板时uboot启动参数的设置 &nbsp;

通过nfs网络文件系统启动tiny6410开发时uboot启动参数应该设置为: console=ttySAC0 lcd=S70 root=/dev/nfs nfsroot=192.168.1.30:/opt/tiny6410/fs/rootfs_mini6410 ip=192.168.1.40:192.168.1.30:192.168.1.30:255.255.255.0:tiny6410:eth0:off 注意:这里一定要指明你的lcd的类型,不然通过nfs成功启动tiny6410时,你的lc

Intent flag 与启动模式的对应关系

Activity有四种启动模式: 1.standard(标准)    2.singleTop    3.singleTask  4.singleInstance 标识某个Activity的启动模式,有两种方式: 1.一种是通过AndroidManifest.xml    2.一种是通过Intent的标识 通过AndroidManifest.xml来标识: <activity android:name=".Activity1" android:launchMode="st