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/

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TerminateProcess函数简单使用示例[通俗易懂]

    TerminateProcess顾名思义,就是终止进程的意思。是WindowsAPI的函数,示例代码如下://Demo.cpp:定义控制台应用程序的入口点。//终止进程Demo#include”stdafx.h”usingnamespacestd;//@param:dwpid:指定需要关闭的进程pidintCloseProcess(DWORDdwpi…

    2022年4月7日
    116
  • C语言图书管理系统设计报告「建议收藏」

    C语言图书管理系统设计报告「建议收藏」源代码:https://blog.csdn.net/k_young1997/article/details/73480766XXXX大学C语言课程设计报告题目图书管理系统设计专业班级XXXX级计算机科学与技术本科X班组别计科第…

    2022年10月16日
    0
  • 【Android音视频开发】【034】WEBRTC之ICE服务器搭建

    【Android音视频开发】【034】WEBRTC之ICE服务器搭建前篇由于ICE服务器是作为一个中转服务器来使用的,因此它必须搭建在外网,我是搭建在阿里云服务器上面的搭建ICE服务器需要一定的Linux经验和排错能力,没接触过Linux的量力而为切换到root用户sudosuroot安装opensslapt-getinstallopenssllibssl-devmake安装libevent2wgethttps://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar

    2022年6月8日
    33
  • idea2021永久激活码【2021.8最新】「建议收藏」

    (idea2021永久激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    195
  • Django(23)Django限制请求装饰器

    Django(23)Django限制请求装饰器前言有时候,我们想要限制访问的请求方法,比如我们希望用户只能通过get方式请求,post不允许,那么我们可以采用装饰器的方式,django已经为我们提供了内置的装饰器限制请求装饰器Django内

    2022年8月7日
    1
  • git无法删除本地分支_git如何删除远程分支

    git无法删除本地分支_git如何删除远程分支git删除本地分支出现错误转载:https://blog.csdn.net/benben_2015/article/details/79782202删除本地分支经常出现的情况有以下几种:error:Thebranch‘testing’isnotfullymerged.使用gitbranch-dtestin…

    2022年10月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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