【问题标题】:Activity.finish() called but activity stays loaded in memoryActivity.finish() 被调用,但活动仍然加载在内存中
【发布时间】:2011-01-04 15:01:19
【问题描述】:

当我在调试器上运行我的应用程序时,我得到了主线程和 3 个绑定线程。

在单击按钮时,我调用 Activity.finish(),看起来它会在 UI 关闭并返回主屏幕时结束 Activity。

但是,在调试器中,它仍然将主线程和 3 个绑定线程显示为“(running)”。

我很困惑为什么会这样。更重要的是,当我退出应用程序后再次运行它时,它会导致我的应用程序调用 Activity.onResume()

我目前在Activity中重写了这些方法,但是我在每一个中都调用了相应的超函数:

  • onDestroy()
  • onPause()
  • onResume()
  • onSaveInstanceState()

非常感谢您对此提供任何帮助或建议!

【问题讨论】:

  • 阅读活动生命周期。并理解这个androidjavadoc.com/1.0_r1_src/android/app/doc-files/…
  • 嗨小说,我已经阅读了很多次文档,你发布的图片是我从中获得理解的。我只是很困惑地看到它在我调用 Activity.finish() 后正在恢复而不是重新启动。

标签: android android-activity android-lifecycle


【解决方案1】:

您无法控制应用何时离开主内存,但操作系统可以。仔细看Activity.finish...

当你的活动完成时调用它 并且应该关闭。这 ActivityResult 被传播回 无论是谁通过 onActivityResult()。

请注意,这与内存无关。至于调用 Activity.onResume,这正是您对生命周期的期望;请记住,onResume 不仅在恢复后调用,甚至在 onCreate 之后首次启动应用程序时也调用。

虽然不完全符合您的要求,但我建议您阅读this article about exit buttons,它接着说了一些非常重要的内容

[Activity.finish] 完全等同于点击返回按钮。

【讨论】:

  • 感谢 Andrew,这让我大开眼界。我一直在想 Activity.finish() 关闭它而不是把它放在队列中等待关闭。在这种情况下必须做一些返工。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 2017-11-08
  • 2017-02-21
相关资源
最近更新 更多