从Android中的堆栈历史记录中删除活动

时间:2013-07-17 04:30:20

标签: android android-activity

所以...... 让我们假设以下活动顺序

A - > B - > C - > D - > ë

如果我在E中执行Action1我只想从堆栈中删除E并返回到D.

另一方面,如果我在E中执行Action2,我想从堆栈中删除E和D并返回到C

怎么做?

上面的序列是消息App的简单实现,所以A是登录活动,B是Profile活动,C显示好友请求列表,D显示所选人员C的个人资料,而在C中有2个按钮一个用于批准,第二个用于取消requset,现在如果单击其中任何一个,则将其带到E,其中是或否执行操作,如果否则返回到选定人员的配置文件,是的它应该返回到C

5 个答案:

答案 0 :(得分:0)

你能做的就是当你从A-> B调用finish();来结束活动A时,对于B-> C来说也是如此,那就是结束B.所以当你到达E时,只有E才会有效。所以现在当你Action1进行Action2时,请拨打活动D,然后进行finish();来电活动C.这次在E上调用{{1}}。这样就可以完全按照自己的意愿行事。

答案 1 :(得分:0)

如果Action1没有做任何事情,因为如果用户按下后退按钮,E将被删除,您将返回D。如果Action2,请使用标记C启动Intent.FLAG_ACTIVITY_CLEAR_TOPDE将从堆栈中清除

答案 2 :(得分:0)

每次从一个Activity移动到另一个Activity时,您都可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP意图添加此标志。这将清除您之前的所有活动,以便在活动E中堆栈中没有活动。

答案 3 :(得分:0)

如果它始终是要执行此类操作的最后一个活动,那么您可以为结果启动最后一个活动。所以当D产生E时,使用startActivityForResult (Intent intent, int requestCode)来做。稍后当您在E中执行操作时,请为E调用finish()并在此之前将结果代码传递给D.根据该结果,您可以不执行任何操作(因此D将保持不变)或者您可以调用D上也finish()

答案 4 :(得分:0)

如果通过堆栈表示最近的应用程序然后清除最近的应用程序,则可以添加

android:excludeFromRecents="true" 

在manifest.xml

中的activity标记内