Android之 FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_CLEAR_TASK :如果在调用Context.startActivity时传递这个标记,将会导致任何用来放置该activity的已经存在的task里面的已经存在

的activity先清空,然后该activity再在该task中启动,也就是说,这个新启动的activity变为了这个空tas的根activity.所有老的activity都结束掉。

该标志必须和FLAG_ACTIVITY_NEW_TASK一起使用。

示例:

我们有三个activity:MainActivity、ActivityA、ActivityB. 依次从MainActivity中启动ActivityA,从ActivityA中启动ActivityB.

首先我们所有的都使用缺省的,也即没有设置taskAffinity、launchMode,启动activity时Intent也不带标记,我们看一下启动B之后的堆栈:

ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)    Main stack:    TaskRecord{4199dd68 #56 A com.leaves.ipanel U 0}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity }    Hist #3: ActivityRecord{4140fdf8 u0 com.leaves.ipanel/.ActivityB}    Intent { act=com.leaves.ipanel.ActivityB cmp=com.leaves.ipanel/.ActivityB }    ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061}    Hist #2: ActivityRecord{413ff7e8 u0 com.leaves.ipanel/.ActivityA}    Intent { act=com.leaves.ipanel.ActivityA cmp=com.leaves.ipanel/.ActivityA }    ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061}    Hist #1: ActivityRecord{413f8b28 u0 com.leaves.ipanel/.MainActivity}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.leaves.ipanel/.MainActivity }    ProcessRecord{41517e80 13350:com.leaves.ipanel/u0a10061}    TaskRecord{41350f60 #2 A com.android.launcher U 0}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.android.launcher/com.android.launcher2.Launcher }    Hist #0: ActivityRecord{41616790 u0 com.android.launcher/com.android.launcher2.Launcher}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher }    ProcessRecord{41615818 628:com.android.launcher/1000}   

可以看到三者在同一个task中,且都存在。

接下来我们在启动ActivityB时添加FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK

public void onClick(View v) {    // TODO Auto-generated method stub    Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());       Intent intent = new Intent("com.leaves.ipanel.ActivityB");      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);    startActivity(intent);     
}  
再看下启动ActivityB之后的堆栈:

    ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)    Main stack:    TaskRecord{4245bd10 #57 A com.leaves.ipanel U 0}    Intent { act=com.leaves.ipanel.ActivityB flg=0x10008000 cmp=com.leaves.ipanel/.ActivityB }    Hist #1: ActivityRecord{413f8b28 u0 com.leaves.ipanel/.ActivityB}    Intent { act=com.leaves.ipanel.ActivityB flg=0x10008000 cmp=com.leaves.ipanel/.ActivityB }    ProcessRecord{41413010 13441:com.leaves.ipanel/u0a10061}    TaskRecord{41350f60 #2 A com.android.launcher U 0}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.android.launcher/com.android.launcher2.Launcher }    Hist #0: ActivityRecord{41616790 u0 com.android.launcher/com.android.launcher2.Launcher}    Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher }    ProcessRecord{41615818 628:com.android.launcher/1000}    

可以看到,MainActivity和ActivityA都被结束掉了,原因就是因为该task用来装载ActivityB,而启动时又设置了FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 日志管理框架:Common.Logging和log4net

01—DLL引用‍common logging是一个通用日志接口框架,log4net是一个强大的具体实现框架. common logging可以把输出连接到其他非log类上, 如EntLib的日志、NLog等‍‍‍‍‍‍‍‍‍‍‍‍‍‍项目中需要引入的DLL:Common.Logging.dllCommon.Logging.Core.dllCommon…

boost常用记录

1.BOOST_FOREACH 经常会遍历容器&#xff0c;写for/while循环到手痛&#xff0c;使用BOOST_FOREACH可以减少我们的工作。支持容器vector/list/set/deque/stack/queue#include <boost/foreach.hpp> BOOST_FOREACH(value,container){ //遍历每个元素 } 例子&#xff1a; ve…

Cacti迁移RRA数据迁移脚本

迁移程序和数据库完成后&#xff0c;默认的rra数据并不能出图&#xff0c; 需要从旧机器上将rra数据导出到新机器上&#xff0c;附上脚本 #导出rra数据 #!/bin/bash rrddump"/usr/bin/rrdtool dump" xmldir/data/rraxml/ rradir/var/www/html/cacti/rra/ for file in…

Android之FLAG_ACTIVITY_SINGLE_TOP

FLAG_ACTIVITY_SINGLE_TOP :如果当前栈顶的activity就是要启动的activity,则不会再启动一个新的activity实例&#xff1a;我们有一个apk&#xff0c;apk中包含两个Activity:MainActivity和ActivityA&#xff0c;点击MainActivity启动ActivityA,点击ActivityA还是启动ActivityA&…

我开发了一个对.NET程序进行瘦身的工具

我开发了一个对.Net程序瘦身的工具&#xff0c;可以把被引用但是没有被使用的程序集删除。我用它把一个.Net core程序从147兆瘦身到59.5兆。.NET中发布程序的时候有对程序集进行剪裁的功能&#xff0c;但是那个功能只能做静态检查。比如我们的项目使用了A程序集&#xff0c;A程…

三联竟出了这么赞的杂志!各领域佼佼者畅所欲言,为少年建立思维判断体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子&#xff0c;被大人护着走&#xff1b;18岁猛然被定义为成年人&#xff0c;要选择大学、专业&#xff0c;开始面对感情。中间的人生呢&#xff1f;“你是个学生&#xff0c;学习是本职&#xff0c;现在谈什么人生&a…

源码lnmp

1、准备工作&#xff1a;配置yum源安装开发工具、编译工具gcc gcc-c make配置固定ip地址 关闭iptables selinuxnetstat -anpult | grep :3306netstat -anpult | grep :80若端口占用kill并service httpd stop ; chkconfig httpd offservice mysqld stop ; chkconfig mysqld off …

IIS书籍

book.51cto.com/art/200908/146040.htm

基于'sessionStorage'与'userData'的类session存储

Storage.js&#xff1a; 注意&#xff1a;此版本实现的存储在符合Web存储标准(ie8及ie8以上的版本与其他主流浏览器)的情况下与session的周期一致,但在页面不关闭的情况下没有过期时间,ie7及以下版本则默认是永久保存&#xff0c;但可以通过预留的方法setMaxAge(Number age)来设…

Android之FLAG_ACTIVITY_TASK_ON_HOME

FLAG_ACTIVITY_TASK_ON_HOME :把当前新启动的任务置于Home任务之上&#xff0c;也就是按back键从这个任务返回的时候会回到home&#xff0c;即使这个不是他们最后看见的activity 注意这个标记必须和FLAG_ACTIVITY_NEW_TASK一起使用。 实例&#xff1a; 一个apk中有MainActiv…

C# WPF中添加调试信息查看窗体

第一步&#xff1a;添加wpf窗口&#xff1b;第二步&#xff1a;在主窗体image的MouseLeftButtonUp事件中调用调试窗口&#xff1b;StatusViewWindow svWindow new StatusViewWindow();svWindow.Show();第三步&#xff1a;在主窗体中开个线程通过udp接收光电广开的数据&#xf…

杨振宁追求的物理美学,居然在这里实现,物理学史上颜值最高的组合,看完后跪了……

全世界只有3.14 % 的人关注了爆炸吧知识一沙见世界 一花窥天堂手心握无限 须臾纳永恒杨振宁曾说读上面的四句诗可以感受到物理的美但物理的美不止于此物理还有一种庄严美一种神秘美一种初窥宇宙奥秘的畏惧美物理就是如此的迷人任何语言在它的面前都很贫瘠数学让人摆脱了愚昧而…

《SAS编程与数据挖掘商业案例》学习笔记之一

今天有空看到一本挺不错的书&#xff0c;仔细阅读&#xff0c;发现很多有用的知识点&#xff0c;于是认真研读起来&#xff0c;以下是初步的要点笔记。 切换至日志窗口的命令是log、热键是F6&#xff1b; 切换至输出窗口的命令是output、热键是F7&#xff1b; 切换至编辑器窗口…

mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增...

在mssql数据库中&#xff0c;时间字段如果想使用当前的时间&#xff0c;默认值是 getdate() 在mysql里面&#xff0c;如果是用 datetime类型&#xff0c;值用now() 是不允许的。 修改为 timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间&#xff0c;即可以达到mssql里面…

FirewallD is not running

2019独角兽企业重金招聘Python工程师标准>>> 1.发现安装好tomcat后&#xff0c;发现无法访问tomcat首页&#xff0c;后来发现防火墙没有开放8080端口。 需注意的是&#xff1a;CentOS 7防火墙换用Friewalld了&#xff0c;所以要用以下命令将端口号加进防火墙&#x…

Android之FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET&#xff1a;重置该task时清除该activity这个标志将会非常有用当你想在你的应用中有个逻辑切换&#xff0c;例如&#xff0c;一个 e-mail的应用可能用于一个命令去显示附件&#xff0c;这个命令启动一个图片浏览的activity去显示附件&#…

Dom4J 解析xml ,类查询

/*** 从XML文件比对&#xff0c;传入provinceId 返回 provinceShortName * param provinceid* return*/public static String provinceIdEXprovinceCodeFromXml(String provinceid){ String provinceShortName"";try { SAXReader sax new SAXReader(); File filene…

三年租男友回家竟花了10万......

1 不要让别人一天毁了它&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 每天一个单身小技巧&#xff08;via.最佳蹲坑读物&#xff0c;侵删&#xff09;▼3 被封印在木桩里的哆啦A梦&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 大家的对象都是哪里…

《SAS编程与数据挖掘商业案例》学习笔记之二

继续之前的读书笔记&#xff0c;废话少说&#xff0c;直奔主题。 四.连接数据库的方式 libname形式&#xff1a; Oracle 链接&#xff1a;Libname IBMSHCU oracle userbi passwordbi schemaeduc; DB2链接&#xff1a;libname hsdb db2 userxxx password"xxx" datas…