2 baby bonnie Baby_Bonnie 于 2013.03.07 16:01 提问

所有的 activity stack 是空的
Intent intent=new Intent(context,MyClass.class);    
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                    
startActivity(intent);
finish();

上面的代码将会结束所有 stack 中的 activities,并且会重新启动一个 activity。
当我把这个activity加入到一个类中,能正常运行,但在其它的类同样的位置,也就是同一行能执行,还会启动一个新的activity,但是当前的activity不能结束,一直开启着。
这是什么情况呀?

3个回答

s_STEFANIE_s
s_STEFANIE_s   2013.03.07 17:17
已采纳

首先FLAG_ACTIVITY_CLEAR_TOP并不是清空activity栈中的所有activity,而是你跳转到的activity的所有上方的activity,当然是在启动模式是默认的情况下;
然后.finish()写全了是this.finish(),也就是XXXActivity.this.finish();看看是否结束的是自己要结束的activity.

hxn_217
hxn_217   2013.03.07 17:04

我发现通过执行 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 所有的 activities 都结束了,但不是 parent activity。
所以你如果想结束 parent activity,需要调用 startActivityForResult()方法。

aomandeshangxiao
aomandeshangxiao   2013.03.12 15:47

clear_top的意思楼主可能一开始没有理解清楚。s_STEFANIE_s回答的很好。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android 清除所有activity
android中清除所有activity的需求,还是在蛮多场景出现的,最近项目中有遇到,把解决方法贴出来,也标记下~ 首先自定义一个ActivityManager管理类,用于管理栈中的activitypublic class ActivityManager { private static final String TAG = "ActivityManager"; private
将所有的Activity全部finish掉
(1)创建一个ActivityCollector.java,此类用作收集和销毁activity的公共类.public class ActivityCollector { public static List activities = new ArrayList(); public static void addActivity(Activity activity
android中关闭所有activity方法
在android中退出app时关闭所有Activity的方式有很多,例如发送一个全局的BroadCast、直接杀死当前的pid、、、但是如果我们做的功能是一个sdk那情况就不一样了。。经过项目上线后惨痛的教训我们决定还是通过自定义Stack来管理我们的activity。       首先说说这个坑人的BroadCast,因为我们发送的是无序广播,不知道那个Activity会先收到,这个导致了一个
queryIntentActivities快速获取自己App内的所有指定的Activity 并设置跳转
//这个在AndroidManifest中加入 CATEGORY_SAMPLE_CODE 标记 <activity android:name="com.xxx.xxx.xxx.activity.TestActivity" android:configChanges="orientation|keyboardHidden|screenLayout
一次性退出所有的activity的方法
使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器。定义一个Application类来存储Activity对象的引用。代码如下: public class ExitAppliation extends Application{ private List activityList = new LinkedList(); private static ExitApp
一个面试题引发的思考:Android应用退出时候,关闭所有的Activity
一、概述long long ago ,记得面试的时候,面试官问了我这样一个问题:当Android应用退出的时候,关闭所有的Activity。当时我答出来了一种非主流的做法。现在我总结了三种退出所有Activity的可行方法(应该还有方法,欢迎小伙伴们补充)。分别是: 1.自定义Application来管理所有的Activity 2.使用广播来管理 3.利用Activity的任务栈来管
关于Activity
Android 四大组件 Activities –管理应用程序展示 Services – 管理后台服务 Broadcast receivers – 接收广播通知信息,并作出处理 Content Provider – 管理数据共享,内容提供者 Activity 通过Intent进行通信,在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。 典型的动作类型有:MAIN(activ
java stack的详细实现分析
简介     我们最常用的数据结构之一大概就是stack了。在实际的程序执行,方法调用的过程中都离不开stack。那么,在一个成熟的类库里面,它的实现是怎么样的呢?也许平时我们实践的时候也会尝试着去写一个stack的实现玩玩。这里,我们就仔细的分析一下jdk里的详细实现。 Stack     如果我们去查jdk的文档,我们会发现stack是在Java.util这个包里。它对应的一
Android Activity(一)初识
Activity,在Android开发中,经常使用到,出境频率是相当高的。今天就来仔细研究一下Activity。 一、概述。        以下描述信息来自Android官网。       Activity是单独的,用于处理用户操作。几乎所有的Activity都与用户交互,因此Activity类可以创建一个窗口,使用setContentView()来设置UI。Activity经常呈现给用户是
如何获取一个Android App APK的所有Activity类名?
我目前找到了两种办法: 方法1: 通过adb logcat $ adb logcat V/ActivityManager( 602): com.tencent.mm/.plugin.sns.ui.SnsTimeLineUI: task=TaskRecord{432b6e58 #3 A com.tencent.mm U 0} V/ActivityManager( 602): c