gpt4 book ai didi

android - 完成特定 Activity 的所有实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:32 25 4
gpt4 key购买 nike

应用程序中可以有很多 Activity ,最后启动的 Activity 位于堆栈顶部,按下后它会完成当前 Activity 。我有一个 Activity 序列,这里是流程..

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

IMP - 我想让 C(1) 在堆栈中保持 Activity 状态,除非我完成 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);
}

这将清除堆栈中的所有 Activity 并重新启动 Activity

第二

在单例类中跟踪Activity,然后重新启动所需的流程,当有很多Activity要启动时,这将如何消耗时间。

所以我认为应该有一些使用包管理器或其他可以解决问题的解决方案,感谢解决方案

最佳答案

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

但是您可以通过这种方式在简历中处理 Activity C1 -

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

public static boolean IsClosingActivities = false;

C2 可以在 Activity C2 即将“完成”之前将此值设置为“真”。

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

2 - 在简历上的 C 实现:

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

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

关于android - 完成特定 Activity 的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com