java清空栈_java - 如何使用Intent.FLAG_ACTIVITY_CLEAR_TOP清除活动堆栈?
java - 如何使用Intent.FLAG_ACTIVITY_CLEAR_TOP清除活动堆栈?
我已经阅读了几篇关于使用它的帖子,但必须遗漏一些因为它不适合我。 我的活动A在清单中有launchmode =“singleTop”。 它启动活动B,启动模式=“singleInstance”。 活动B打开浏览器并接收和意图返回,这就是为什么它是singleInstance。 我试图覆盖后退按钮,以便用户被发送回活动A,然后可以按Back返回活动,而不是再次返回活动B.
// activity B@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(android.os.Build.VERSION.SDK_INT
从浏览器返回后,堆栈是......A,B,浏览器,B
我希望这段代码能够将堆栈更改为......一个...这样再次按下会使用户返回主屏幕。
相反,似乎将堆栈更改为......A,B,浏览器,B,A......好像那些旗帜不在那里。
我尝试在startActivity之后调用活动B中的finish(),但后面的按钮再次将我带回浏览器!
我错过了什么? 谢谢!
10个解决方案
101 votes
我已经开始活动A-> B-> C-> D。当按下后退按钮时,活动DI想要转到活动A.由于A是我的起点,因此已经在堆栈中,A顶部的所有活动都被清除,你不能回到A的任何其他活动。
这实际上适用于我的代码:
@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK){Intenta=newIntent(this,A.class);a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(a);returntrue;}returnsuper.onKeyDown(keyCode,event);}
bitestar answered 2019-06-02T10:19:29Z
61 votes
@bitestar有正确的解决方案,但还有一个步骤:
它隐藏在文档中,但是您必须将Activity的launchMode更改为standard以外的任何内容。否则它将被销毁并重新创建而不是重置为顶部。
ScouseChris answered 2019-06-02T10:18:58Z
18 votes
为此,我使用launchMode = "singleTask"标志启动Intent
(没有FLAG_ACTIVITY_NEW_TASK)
和已启动活动的清单中的launchMode = "singleTask"。
似乎它按我的需要工作 - 活动不会重新启动,所有其他活动都会关闭。
Fedir Tsapana answered 2019-06-02T10:20:17Z
9 votes
虽然这个问题已经有了足够的答案,但我想有人会想知道为什么这个标志以这种特殊的方式工作,这就是我在Android文档中找到的
上面示例中当前运行的活动B实例将在其onNewIntent()方法中接收您从此处开始的新intent,或者本身已完成并使用新intent重新启动。
如果它已将其启动模式声明为“多个”(默认值)并且您没有在同一意图中设置FLAG_ACTIVITY_SINGLE_TOP,那么它将被完成并重新创建; 对于所有其他启动模式或如果设置了FLAG_ACTIVITY_SINGLE_TOP,则此Intent将被传递到当前实例的onNewIntent()。
所以,要么,
1.将活动A的Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP更改为标准的其他内容(即singleTask或其他内容)。 那你的旗帜FLAG_ACTIVITY_CLEAR_TOP将不会重启你的活动A.
要么,
2.使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP作为您的旗帜。 然后它会以你想要的方式工作。
Darpan answered 2019-06-02T10:21:20Z
2 votes
我知道已经有一个已接受的答案,但我不知道它对OP有何影响,因为我不认为FLAG_ACTIVITY_CLEAR_TOP在他的特定情况下是有意义的。 该标志仅与同一任务中的活动相关。 根据他的描述,每个活动都有自己的任务:A,B和浏览器。
可能会让他失望的是A是singleTop,当它应该是singleTask时。 如果A是singleTop,而B开始A,那么将创建一个新的A,因为A不在B的任务中。 从singleTop的文档:
“如果活动的实例已存在于当前任务的顶部,则系统会将意图路由到该实例......”
由于B启动A,当前任务是B的任务,它是针对singleInstance的,因此不能包含A.使用singleTask在那里实现所需的结果,因为系统将找到具有A的任务并将该任务带到前台。
最后,在B启动A并且用户从A按下后,OP不希望看到B或浏览器。 为此,在B中调用finish()是正确的; 再次,FLAG_ACTIVITY_CLEAR_TOP将不会删除A任务中的其他活动,因为他的其他活动都在不同的任务中。 但他缺少的部分是B在触发浏览器的意图时也应该使用FLAG_ACTIVITY_NO_HISTORY。 注意:如果浏览器在启动OP的应用程序之前已经运行,那么当然从A回来时你会看到浏览器。所以要真正测试它,一定要在启动应用程序之前退出浏览器。
Kevin answered 2019-06-02T10:22:16Z
2 votes
我使用三个标志来解决问题:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
Houssin Boulla answered 2019-06-02T10:22:41Z
1 votes
FLAG_ACTIVITY_NEW_TASK是一个问题,它启动一个新任务。除去它& 你完成了
好吧,我建议你在使用它们之前阅读每个Flag的功能
阅读本文& 意图标志在这里
100rabh answered 2019-06-02T10:23:20Z
1 votes
最初我也遇到了使FLAG_ACTIVITY_CLEAR_TOP工作的问题。 最终我通过使用它的值(0x04000000)使它工作。 所以看起来有一个Eclipse /编译器问题。 但不幸的是,幸存的活动重新开始,这不是我想要的。 所以看起来没有简单的解决方案。
ja_chu answered 2019-06-02T10:23:46Z
1 votes
在清单文件中添加android:noHistory =“true”。
android:name="UI"android:noHistory="true"/>
Ahmad Aghazadeh answered 2019-06-02T10:24:12Z
0 votes
我在启动新意图后打电话给activity_name.this.finish(),它对我有用。
I tried"FLAG_ACTIVITY_CLEAR_TOP"and"FLAG_ACTIVITY_NEW_TASK"
但它对我不起作用......我不建议使用这个解决方案,但如果设置标志对你不起作用,你可以尝试这个..但我仍然建议不要使用它
Swap-IOS-Android answered 2019-06-02T10:24:40Z
相关文章:

「学习笔记-Linux」学习Shell Script
学习Shell Script Table of Contents 1 什么是Shell Scipt 1.1 程序书写1.2 程序执行2 简单Shell练习 2.1 例1 接收用户输入2.2 例2 按日期建立相似名字的文件3 判断式 3.1 测试文件是否存在3.2 test常用选项 3.2.1 文件类型3.2.2 权限3.2.3 文件新旧比较3.2.4 整数,…

django admin组件
admin实例 from django.contrib import admin from app01 import models from django.utils.safestring import mark_safe # Register your models here. class UserInfoConfig(admin.ModelAdmin):# 自定义显示的东西def xxx(self):return mark_safe(<a href>xx</a>…

C语言网络编程:close或者shutdown断开通信连接
文章目录前言close函数介绍shutdown函数介绍前言 这里在主要通过实例进行描述close函数在网络编程中的使用 TCP编程模型中客户端或者服务器只要主动通过close发起断开连接的请求,则通信连接可以中断。 可以通过在主进程中抓取通信端的断开信号,比如SIGI…

Await, and UI, and deadlocks! Oh my!
It’s been awesome seeing the level of interest developers have had for the Async CTP and how much usage it’s getting. Of course, with any new technology there are bound to be some hiccups. One issue I’ve seen arise now multiple times is developers acc…

传智播客java基础的习题_传智播客java基础班(集合与IO)阶段测试题
本帖最后由 zhaodecang 于 2016-6-8 19:38 编辑单选题:(每道题目2分)1. ArrayList类的底层数据结构是( )a) 数组结构b) 链表结构 c) 哈希表结构 d) 红黑树结构2. LinkedList类的特点是( )a) 查询快b) 增删快c) 元素不重复 d) 元素自然排序3. Vector类的特点…

$@ 与 $* 差在哪?
$ 与 $* 差在哪? 要说 $ 与 $* 之前,需得先从 shell script 的 positional parameter 谈起...我们都已经知道变量(variable)是如何定义及替换的,这个不用再多讲了。但是,我们还需要知道有些变量是 shell 内定的,且其名…

[源码和文档分享]基于Netty和WebSocket的Web聊天室
一、背景 伴随着Internet的发展与宽带技术的普及,人们可以通过Internet交换动态数据,展示新产品,与人进行沟通并进行电子商务贸易。作为构成网站的重要组成部分,留言管理系统为人们的交流提供了一个崭新的平台。同时,聊…

t-tcpdump
文章目录写入和读取数据包抓取数据包抓取指定网卡流量指定数据的输出格式数据包抓取的方向输出信息的详细程度的可控选项抓取指定协议的数据包表达式介绍逻辑连接符的使用type的确定写入和读取数据包 在工作或者生活中的网络故障排除时最有力的方式就是抓包分析网络状况&#…

java jdk 8u111_8u111-jdk-alpine在java开发中的NullPointerException错误解决方案
问题描述在部署一个验证码服务的容器服务时遇到了一个空指针错误,错误代码为:java.lang.NullPointerExceptionat sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguratio…

sprintf函数做什么用?
sprintf函数原型为 int sprintf(char *str, const char *format, ...)。作用是格式化字符串,具体功能如下所示: (1)将数字变量转换为字符串。 (2)得到整型变量的16进制和8进制字符串。 (3&#…

Yii学习笔记【3】
加载控制器及其方法: 根据route信息,获得当前控制器| 初始化当前控制器,CController::init(),默认为空| 执行当前控制器,CController::run()||----> 创建action,为空则默认为index|得到CInlineAction的实…

验证码相似问题
产生随机验证码时,类似数字1和小写字母l经常容易让人混淆分不清楚, 因此,产生随机验证码时应避免此情况 1(一)、l(哎哦)、I (哎)中三个任意两个或者全部不可同时存在 0&a…

C语言网络编程:accept函数详解
文章目录前言函数描述代码实例如何得到客户端的IP 和 端口号前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的主动描述符转为被动描述符进行监听之后,接口accept通过…

java 声明静态类_java静态类声明--java类可以声明为static吗
为了理解static关键字在类声明中的使用,首先我们需要了解类声明。有两种类,一种是top-level class;一种是inner class。Top-level classestop-level class可以被声明为包成员,每一个top-level类对应于一个文件名与类名相同的java文…

单元测试资料汇总
从安装到配置 首先到官网http://www.nunit.org/下载如下图的资料,安装NUnit-2.6.1.msi包。 然后挂在VS2010外部工具这个地方来使用,工具—>外部工具—>添加—>标题:Nunit—>命令:安装路径—>确定。 然后打开Nunit&…

rhel5+nis+autofs+nfs
创建NIS服务器用户,用于客户端登陆 NIS服务器相关包:ypserv、ypbind(在RHEL5中默认已安装)、yp-tools(在RHEL5中默认已安装)。 运行nisdomainname test.com并把加入到如下位置 设置NIS服务器的域名 在NIS环境中将以NIS服务器上的所有用户用于NIS环境中所…

Beta冲刺 (1/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 熟悉并编写小程序的自定义控件展示GitHub当日代码/文档签入记录接下来…

C语言网络编程:listen函数详解
文章目录前言函数描述代码实例TCP服务器为什么调用listen前言 根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向字节流,面向连接的可靠通信服务正常进行。接下来的listen端口则为我们进行三次…

MVC页面加载速度优化小记
前言:最近做一个地图展示页面,业务初期没什么问题,运行一阵后报错: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLeng…

java生成函数excel_java实现在excel中创建及读取公式
操作excel表格用公式来处理数据时,可通过创建公式来运算数据,或通过读取公式来获取数据信息来源。这里使用了java类库(Free Spire.XLS for Java 免费版)获取文件包后,解压,将lib文件夹下的jar文件导入Java程序。如图:(…

实战:使用TCP/IP筛选保护服务器安全
使用TCP/IP筛选保护服务器安全 对于部署在Internet的服务器,安全是必须要考虑的事情。为了降低服务器受***的危险,停止不必要的服务或在本地连接的TCP/IP属性中只打开必要的端口。 如图2-127所示,实验环境为Server的IP地址192.168.1.200&…

python中的协程(二)
协程 1、协程: 单线程实现并发 在应用程序里控制多个任务的切换保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他的任务都不能执行…

C语言网络编程:bind函数详解
文章目录函数功能函数头文件函数使用函数参数函数举例为什么需要bind函数服务器如何知道客户端的ip和端口号htons函数htons兄弟函数htonl,ntohs,ntohl为什么要进行端口的大小端序的转换inet_addr函数函数功能 bind API能够将套接字文件描述符、端口号和ip绑定到一起 注意&…

java flex 图片上传_flex上传图片到java服务器
今天弄flex上传图片到java,现在弄成功,中间也经常一点小波折,现记录一下。重点在java侧的实现。flex侧:文件上载到在url参数中传递的URL。该URL必须是配置为接受上载的服务器脚本。Flash Player使用HTTP POST方法上载文件。处理上…

开发者怎么样做到盈利
开发者如何赚钱? 不可回避的一点就是,开发者的产品要有足够好的用户体验。假设你会做手机游戏,那么把手游做好了之后用户的粘性很大,如果你做应用,那么你的应用下载会对用户产生有价值的东西。 其实如果你的产品真的有价值&#…

如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择
作者信息:本篇文章是由SQL Server Cloud Infrastructure Team的 Madhan Arumugam 和 Guy Bowerman共同著作。 简介 把SQL 数据托管在哪里,Windows Azure 为您提供了两个选择,VM上的SQL Server(以下简称 SQL/VM)和 Wind…

C语言网络编程:socket函数
函数描述 头文件 <sys/types.h> <sys/socket.h> 函数使用int socket(int domain, int type, int protocol); 函数功能:创建一个通信的终点,并返回一个文件描述符来代表通信的终点 函数参数: a. domain 代编当前创建的socket文…

python excel web_使用python在WEB页面上生成EXCEL文件
近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载,研究了一下找到了以下比较可行的实现方案,下面以web.py为例,把相关代码贴出来供大家参考:首先需要下载生成EXCEL的模块,推荐使用xlwtimport xlwtimport Str…

dateTimePicker编辑状态下,取值不正确的问题
当对dateTimePicker进行编辑,回车,调用函数处理dateTimePicker的value值时,其取值结果是你编辑之前的值,而不是你编辑后的值,虽然dateTimePicker.text的值是编辑后的值,但使用起来不方便,因此暂…

RMAN Backups
oracle 主要的备份工具 RMAN 其中,open database backup, 不需要把数据库设置成backup状态, RMAN reads a block until a consistent read is obtained. 看来备份比较重要的三种文件分别是, data file, control file, archivelog file. Types of Recovery Manager B…