gpt4 book ai didi

android - 从堆栈中清除后台 Activity 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 00:39:01 25 4
gpt4 key购买 nike

正如问题标题所说 - 我需要知道“删除”/销毁/完成位于堆栈中间某处且当前处于暂停模式(不是特定实例 - 但特定派生类)的 Activity 的最佳方法是什么).

例如:
如果堆栈的当前状态如下所示:

ActivityD   <-- top of the stack, currently forground
ActivityC
ActivityA
ActivityC
ActivityA

“清除”所有 ActivityC 实例的请求将导致堆栈如下所示:

ActivityD  <-- still top of the stack, currently forground.
ActivityA
ActivityA

我不想这样做取决于 Activity 启动模式或 Intent 标志。我知道如何使用它们以及它们的好处。

我目前知道我能做的是发送广播,所有需要销毁的 Activity 都会收听,并在收到广播时调用 Activity.finish()。
这是有效的,但它要求接收者即使在其托管 Activity 暂停时也要注册,而且我不确定从暂停的 Activity 中调用“finish()”方法是否正确。

从恢复的 Activity 中调用 Activity.finish() 方法是否正确?

在 OnCreate() 方法中注册 receiver 并在 OnDestroy() 方法中注销他是否正确?

处理恢复 Activity 的广播并从该点调用 finish() 是否正确?

是否有“Android 方式”或一些我不知道的 API 可以从堆栈中清除 Activity ?

提前致谢

最佳答案

制作一个自定义广播接收器并将其注册到可以根据您选择的事件触发的每个 Activity 中。在每个 Activity 的 onReceiveMethod 中(可以选择)只需调用 finish()。在此您的 Activity 将从堆栈中删除。此外,您可以访问此以获得更多帮助: On logout, clear Activity history stack, preventing "back" button from opening logged-in-only Activites

关于android - 从堆栈中清除后台 Activity 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736594/

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