首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构生命周期方法和回键

重构生命周期方法和回键
EN

Stack Overflow用户
提问于 2013-06-20 21:42:01
回答 2查看 104关注 0票数 0

在这里回答关于当调用onDestroy时的一个问题时,安卓文档中似乎出现了不一致的地方。

根据关于任务和后台的android文档

“当用户按后退按钮时,当前活动将从堆栈顶部弹出(活动被销毁),并恢复以前的活动(恢复其UI的前一状态)。”

但是,同时,android生命周期建议,如果UI被部分隐藏,则活动不会自动销毁,而是暂停,如果UI完全隐藏,则停止活动,并且只有在系统资源不足时才会被销毁。

这是两个相反的立场。所以我的问题是-是哪一个?

对拉格哈南丹大喊大叫,感谢他和我在一起发表了一段时间的评论。希望我们能得到答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 22:18:27

这两种说法没有矛盾之处。

当您按下回键时,onDestroy将被调用,除非您重写onBackPressed,不调用finish(),或者执行重写finish和不调用super.finish()的奇怪操作。

如果您不停止对Activity.finish的调用,则总是调用

另一条声明没有提到按住,我在你这里提供的链接下找不到任何东西

如果系统资源不足,则只销毁

另外,当应用程序资源不足时(奇怪的是,在我的手机上没有这样的情况;我得到了OOM),就会调用onDestroy,在此之后,在全球范围内(从所有应用程序中)启动20个其他活动时,就会调用OOM。

我还请您再次查看关于何时调用onDestroy的另一个答案,原因是onDestroy没有被调用。

票数 0
EN

Stack Overflow用户

发布于 2013-06-20 22:04:18

它们在各自的语境中都是正确的。也许生命周期应该说“只有当系统资源不足时,才会从堆栈中弹出”。

举个例子吧。你从活动A开始,然后从A开始活动B,然后从B开始活动C。

  • 现在A和B都被暂停和停止了,但是没有破坏
  • 如果C资源严重,则A或B可能被销毁。

现在按下活动C的后退按钮,您将返回到活动B

  • 活动C暂停,停止,破坏

现在再按后退按钮,你又回到活动A了

  • 活动B被暂停、停止,破坏了

系统尝试保留所有活动实例,以便能够快速重新打开它们。但是,当一个活动从堆栈中弹出时,用户就无法在将来重新打开它们,至少不是同一个实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17224325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档