gpt4 book ai didi

android - 在 Android 中启动新 Activity 后调用 finish() 是个好主意吗?

转载 作者:IT老高 更新时间:2023-10-28 22:14:20 25 4
gpt4 key购买 nike

喜欢:

startActivity(intent);
finish();

不显式调用finish(),前一个Activity不会调用onDestroy(),我的内存(OutOfMemory Exception)用完了。

那么,显式调用 finish() 来防止 OutOfMemory 异常是个好主意吗?

最佳答案

当您启动一个新 Activity 时,当前 Activity 被插入当前任务的后栈。 (您可以通过标志和/或 list 更改此行为,但这是默认行为。)当用户按下后退功能时,顶部 Activity 完成并弹出堆栈。结果是用户看到应用返回到上一个 Activity 。

在开始一个新 Activity 后调用 finish() 是完全没问题的。结果将是当前 Activity (不再位于堆栈顶部,因为您刚刚开始了一个新 Activity )将从堆栈中删除。然后当用户按下 Back 时,它会转到 back stack 上的上一个 Activity (如果堆栈为空,则退出您的应用程序)。

如果您总是在 Activity A 和 B 之间来回跳动,总是启动一个新的并且从不调用 finish(),这可能会导致 OOM 异常,因为堆栈已填满每个 Activity 的实例。

您可以在指南主题 Tasks and Back Stack 中阅读更多相关信息.它还描述了如何正确处理 Activity 之间的循环。

关于android - 在 Android 中启动新 Activity 后调用 finish() 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111245/

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