gpt4 book ai didi

android - 清除整个历史堆栈并在 Android 上启动一个新 Activity

转载 作者:IT老高 更新时间:2023-10-28 12:50:05 26 4
gpt4 key购买 nike

是否可以在堆栈上启动一个 Activity ,清除它之前的整个历史记录?

情况

我有一个 A->B->C 或 B->C 的 Activity 堆栈(屏幕 A 选择用户 token ,但许多用户只有一个 token )。

在屏幕 C 中,用户可能采取了使屏幕 B 无效的操作,因此应用程序希望将他们带到屏幕 A,而不管它是否已经在堆栈中。屏幕 A 应该是我的应用程序堆栈中的唯一项目。

备注

还有许多其他类似的问题,但我还没有找到任何可以回答这个确切问题的东西。我尝试调用 getParent().finish() - 这总是会导致空指针异常。 FLAG_ACTIVITY_CLEAR_TOP 仅在 Activity 已在堆栈上时才有效。

最佳答案

在 API 级别 11 中,为此添加了一个新的 Intent 标志:Intent.FLAG_ACTIVITY_CLEAR_TASK

为了澄清,使用这个:

Java

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Kotlin

intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

不幸的是 API lvl <= 10,我还没有找到一个干净的解决方案。"DontHackAndroidLikeThis" solution确实是纯粹的hackery。你不应该那样做。 :)

编辑:根据@Ben Pearson的评论,对于 API <=10,现在可以使用 IntentCompat相同的类(class)。可以使用 IntentCompat.FLAG_ACTIVITY_CLEAR_TASK 标志来清除任务。因此,您也可以支持 pre API level 11。

关于android - 清除整个历史堆栈并在 Android 上启动一个新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3473168/

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