android - Activity.finish() 方法到底在做什么?

标签 android activity-lifecycle ondestroy application-lifecycle

我在开发android应用有一段时间了,关注了很多关于activity生命周期和应用生命周期的帖子。

我知道 Activity.finish() 方法在通往 Activity.onDestroy() 的某个地方调用,并且还从堆栈中删除了该 Activity ,我猜想它不知何故指向操作系统和垃圾收集器,他可以“做他的伎俩”并在发现合适的时候释放内存....

我来到这个帖子 - Is quitting an application frowned upon?并阅读 Mark Murphy 的回答。

这让我对 finish() 方法究竟做了什么感到有些困惑。

有没有可能我会调用 finish() 而不会调用 onDestroy()

最佳答案

在 Activity 上调用 finish() 时,会执行 onDestroy() 方法。此方法可以执行以下操作:

  1. 关闭 Activity 正在管理的所有对话框。
  2. 关闭 Activity 正在管理的所有游标。
  3. 关闭所有打开的搜索对话框

另外,onDestroy() 不是析构函数。它实际上并没有破坏对象。它只是一种基于某种状态调用的方法。因此,在父类(super class)的 onDestroy() 运行并返回后,您的实例仍然处于 Activity 状态并且非常好*。Android 会保留进程以防用户想要重新启动应用程序,这使得启动阶段更快。该进程将不会做任何事情,如果需要回收内存,该进程将被杀死

关于android - Activity.finish() 方法到底在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10847526/

相关文章:

java - 退出时的后退按钮会产生强制关闭错误

android - Gradle - 如何从 AndroidManifest 获取值?

android - 如何在 onStop() 中检查屏幕开/关状态?

android - 注销 Activity 生命周期回调的正确方法是什么?

android: Activity 被销毁时停止媒体播放器

java - Android:finish() 是否总是调用 onDestroy()?

android - 是否可以强制 Android Studio 在属性 Pane 上显示所有 XML 元素的属性?

android - 是否有用于在 Android 中查看文档(Word、Excel、Powerpoint、PDF 等)的 Intent?

java - 按下android按钮后的 Activity 生命周期 "recents"创建新 Activity 但不销毁旧 Activity

java - ANDROID onBackPressed 不适用于该 Activity