gpt4 book ai didi

android - 在启动另一个 Activity 之前清除 Activity 堆栈

转载 作者:行者123 更新时间:2023-11-29 02:10:27 24 4
gpt4 key购买 nike

你好(我的第一个问题 ;-)

可能有类似的问题,但似乎没有一个能回答我的问题或给我一个真正的解决方案......


问题
A(root)启动BB 可以启动其他 Activity 。 A 决定关闭堆栈(网络连接丢失)并启动 C。这似乎是一个激进的决定,但用户会期望如此,并且在这种情况下确实有意义......

问题
怎么做?我希望使用某个标志或只是调用类似 dismissStack 的东西。但是我找不到正确的解决方案(参见下面的研究)。

研究
我阅读了很多文档,但可用的标志不符合我的需求(或者我没有理解正确)。那里的其他答案告诉我记住开始的 Activity (例如在数组中)并在需要时完成它们。但这对我来说似乎很脏,不知何故我不能接受这是正确的解决方案。我希望一定有更干净的东西?!
(存储堆栈对我来说似乎甚至是错误的。你的应用程序可能会被系统杀死,所以你的静态数据,但你的历史记录将在启动时再次加载。所以你必须保留你保存的堆栈。这变得更加肮脏.. .)

更新
我的代码和我尝试过的(抽象的):

// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);

// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);

(FLAG_ACTIVITY_CLEAR_TOP 不是解决方案,请阅读文档...)

我在 C 上按 Back 并且 B 仍然弹出并且仍然在那里...

我可以通过调用 finishActivity(REQUEST_B) 来删除 Activity 。但是当 B 开始另一个 Activity D 时,如果我稍后在 C 上点击 Back 它仍然会弹出。 B 不见了,但 D 还在...


我确定有些东西我还没有理解或者只是错过了。如果真的必须那样,有人可以给我提示或批准我的研究吗...

最佳答案

我认为您正在寻找 FLAG_ACTIVITY_CLEAR_TOP用于您的 Intent 的标志。

从上面链接的文档中,提供了一个示例:

For example, consider a task consisting of the activities: A, B, C, D. If D calls startActivity() with an Intent that resolves to the component of activity B, then C and D will be finished and B receive the given Intent, resulting in the stack now being: A, B.

您可以在 this link 查看更多关于 Android 中的任务和 Backstack 的信息在 Android 开发文档中

关于android - 在启动另一个 Activity 之前清除 Activity 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796400/

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