完成特定活动的所有实例

时间:2013-02-08 06:27:47

标签: android instance activity-finish activity-stack

在应用程序中可以有很多活动,最后一次启动的活动保持在堆栈顶部,按下它完成当前活动。我有一系列活动,这里是流程..

如果我们有A,B, C(1),D, C(2) ......活动C(1)和C(2)是两个在导航应用程序时启动了不同的Activity C实例。所以必要的是清除活动C的所有实例,结果应该是当我完成 C(2)时我应该留下这些堆栈的 A,B,d 即可。我该怎么办。

IMP - 我希望将 C(1)保持在堆栈中,直到我完成C(2) 因为我可以使用New Task标志启动C而不是创建这些实例,但这些实例具有不同的UI和工作。

以下方法不利。

首先

@Override
public void onBackPressed(){
    super.onBackPressed();
    Intent intent = new Intent(C(2).this , D.class);    
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    startActivity(intent);
}

这将清除Stack中的所有活动并重新启动Activity

第二

在单例类中保持Activity的跟踪,然后重新启动所需的流,这将消耗有许多活动要启动的时间。

所以我认为应该有一些解决方案使用包管理器或其他解决方案,解决方案表示赞赏

1 个答案:

答案 0 :(得分:1)

我不知道在完成C2活动时手动关闭活动C1的方法。

但是你可以通过这种方式处理活动C1 -

1 - 在应用程序类中设置一个标志:

public static boolean IsClosingActivities = false;

在活动C2“完成”之前,C2可以将此值设置为“true”。

并设置“false”,您将为新活动C调用startActivity。(假设稍后可以在应用程序中创建活动C的新实例)。

2 - 在简历的C实现中:

    @Override
    protected void onResume() {     
        super.onResume();
        if (YourApplication.IsClosingActivities) {
                this.finish();
        } 
    }

这样 - 当用户从D-C1导航回来时,他将自己完成并将导航到B.