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
上传中...
上传图片
插入图片