FLAG_ACTIVITY_CLEAR_TOP的使用

FLAG_ACTIVITY_CLEAR_TOP的使用本例使用FLAG_ACTIVITY_CLEAR_TOP退出整个应用程序:多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。补充:finish()和system(0)都只能退出单个activity。我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Int

大家好,又见面了,我是你们的朋友全栈君。

   

本例使用FLAG_ACTIVITY_CLEAR_TOP退出整个应用程序:

多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。

补充:finish()和system(0)都只能退出单个activity。

我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,再次开启A时将会清除该进程空间的所有Activity。

在D中使用下面的代码:
 
Intent 
intent 

new  
Intent();
 
intent.setClass(D. this , 
A. class );
 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
 
//注意
 
startActivity(intent);//启动A Activity
 
finish(); //kill掉自己  
————————-
 
 
在A中加入代码: 
//Override  
 
protected  
void  
onNewIntent(Intent 
intent) 

 
// 
TODO 
Auto-generated 
method 
stub  
 
super .onNewIntent(intent); 
 
//退出  
 
 
 
if  
((Intent.FLAG_ACTIVITY_CLEAR_TOP 

intent.getFlags()) 
!= 
0 ) 

 
 
 
 
 
 
 
 
 
finish(); 
 
 
 
 
 
}  
 
}
————————————
A的Manifest.xml配置成android:launchMode=”singleTop” 


说明:
一般A是程序的入口点,从D起一个A的activity,加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP这个过程中会把栈中B,C,都清理掉。因为A是android:launchMode=”singleTop”

不会调用oncreate(),而是响应onNewIntent()这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把Afinish掉。 栈中A,B,C,D全部被清理。所以整个程序退出了。 
补充:

1.可以把A设置成不可见的Acitivity:
AndroidManifest.xml中设置:
android:theme=”@android:style/Theme.NoDisplay” 

然后在它的onCreate方法里跳转到“真正”的载入界面就可以实现在D中点退出程序按钮时看上去立即退出程序的效果
2.A必须是程序启动的第一个Activity才能起到这种立即退出的效果,因为Intent.FLAG_ACTIVITY_CLEAR_TOP只会把目标Activity的“上面”的Activity清理掉,而如果目标Activity的“下面”还有Activity(换句话说,目标Activity不在栈底),则finish后只会到他下面的那个Activity,而不是立即退出的效果了

转载自:http://blog.sina.com.cn/s/blog_6b936f150101gxnb.html

参考:http://blog.csdn.net/liuhe688/article/details/6754323/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160742.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 舆情分析系统技术解决方案及作用论文_网络舆情解决方案

    舆情分析系统技术解决方案及作用论文_网络舆情解决方案网络舆情分析工作的开展最先需要做好的就是网络舆情的搜集工作,由于互联网信息内容庞杂多样,舆情信息搜集起来困难,所以要进行舆情分析更是难上加难。但若舆情信息收集的不全,就极易导致舆情分析不正确。那么,到底舆情分析工作要怎么做呢?针对此问题,提供了以下舆情分析系统技术解决方案,供各位参考。在了解方案的前,先来说说为什么要采用舆情分析系统进行监测分析。一、使用舆情分析系统进行监测分析的意义网络信息化时代,信息数据量庞大,若一味采用人工进行舆情信息分析,容易出现收集的舆情不全、舆情分析不正确等问题。而通过利用

  • UVA644

    UVA644题意:输入多个序列,判断是否存在前缀关系。思路如下:现

  • git从远程分支拉取代码_git更新分支下的代码

    git从远程分支拉取代码_git更新分支下的代码查看远程所有分支$gitbranch-a创建分支gitbranch[branchname]需要注意,创建分支时,不会有什么提示。新建分支并切换到指定分支gitcheckout-bmasterorigin/mastergitcheckout-b本地分支名origin/远程分支名拉取远程分支代码gitpullorigin/master使用上面的命令可以创建分支名并且关联到远程的分支,但是远程分支存在gitpush多次,发现关联分支的本地代码不是最新的,

  • offsetHeight,clientHeight,scrollHeight区别

    offsetHeight,clientHeight,scrollHeight区别介绍offsetHeight,clientHeight,scrollHeight的区别,offsetWidth,clientWidth,scrollWidth于此类似。offsetHeight:元素的高度+padding+scrollHeight+border。clientHeight:元素的视口高度,指元素的顶部内边框到底部内边框的距离(无滚动条)或顶部内边框到底部滚…

  • windows7如何关闭445端口_win10重装win7的后果

    windows7如何关闭445端口_win10重装win7的后果勒索病毒最新变种2.0已导致我国的很多行业遭受袭击。勒索病毒是通过入侵端口传播,主要是445端口,用户可以通过关闭445端口可以有效预防勒索病毒。下面重点介绍如何关闭445端口。关闭445端口方法图文教程方法一:使用工具一键关闭使用一键关闭445端口软件,下载本工具可以查看计算机开放端口列表及一键关闭445端口方法二:注册表首先,来查看下系统当前都开放了什么端口,怎样查看呢?调出cmd命令行程序,…

    2022年10月16日
  • maven安装及配置(详细版)

    maven安装及配置(详细版)1.下载:方式一可以从官方下载,下载页面:http://maven.apache.org/download.cgi方式二:或者题主提供的版本下载maven安装包提取码:ysns下载好后是一个压缩文件2.安装:maven压缩包解压到一个没有中文,空格或其他特殊字符的文件夹内即可使用。3.配置MAVEN_HOMEmaven的使用是在jdk的基础上,所以电脑必须有jdk第一步:新增环境变量:MAVEN_HOME第二步:在path环境变量中添加:%MAVEN_HOME%\bin

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号