Android 完成特定活动的所有实例

Android 完成特定活动的所有实例,android,instance,activity-finish,activity-stack,Android,Instance,Activity Finish,Activity Stack,应用程序中可能有许多活动,最后启动的活动保持在堆栈顶部,按下后完成当前活动。我有一系列活动,下面是流程 如果我们有A,B,C(1),D,C(2)。。。活动C(1)和C(2)是导航应用程序时启动的活动C的两个不同实例。因此,需要清除活动C的所有实例,结果应该是当我完成C(2)时,我应该离开这些堆栈A、B、D。我该怎么办 IMP-我想让C(1)在堆栈中保持活动状态,直到我完成C(2) 因为我可以用新的任务标志启动C,而不是创建这些实例,但是这些实例有不同的UI和工作方式 以下方法并不可取 首先 @O

应用程序中可能有许多活动,最后启动的活动保持在堆栈顶部,按下后完成当前活动。我有一系列活动,下面是流程

如果我们有A,B,C(1),D,C(2)。。。活动C(1)和C(2)是导航应用程序时启动的活动C的两个不同实例。因此,需要清除活动C的所有实例,结果应该是当我完成C(2)时,我应该离开这些堆栈A、B、D。我该怎么办

IMP-我想让C(1)在堆栈中保持活动状态,直到我完成C(2) 因为我可以用新的任务标志启动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);
}
这将从堆栈中清除所有活动并重新启动活动

跟踪singleton类中的活动,然后重新启动所需的流,这将在有许多活动要启动时消耗多少时间


因此,我认为应该有一些解决方案可以使用package manager或其他解决方案来解决问题,我们非常感谢这些解决方案

我不知道在完成活动C2时如何手动关闭活动C1

不过,你可以用这种方式处理简历中的活动C1-

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

public static boolean IsClosingActivities = false;
在活动C2“完成”之前,C2可将该值设置为“真”

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

2-在C中,在简历上执行:

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

这样-当用户从D导航回来时,C1将自动完成,他将被导航到B。

我也遇到过类似的情况,手动操作是我找到的唯一方法。您可以在:-中看到答案,如果对您有效,请接受答案:)您找到了这样做的方法吗?