在这里回答关于当调用onDestroy时的一个问题时,安卓文档中似乎出现了不一致的地方。
根据关于任务和后台的android文档
“当用户按后退按钮时,当前活动将从堆栈顶部弹出(活动被销毁),并恢复以前的活动(恢复其UI的前一状态)。”
但是,同时,android生命周期建议,如果UI被部分隐藏,则活动不会自动销毁,而是暂停,如果UI完全隐藏,则停止活动,并且只有在系统资源不足时才会被销毁。
这是两个相反的立场。所以我的问题是-是哪一个?
对拉格哈南丹大喊大叫,感谢他和我在一起发表了一段时间的评论。希望我们能得到答案。
发布于 2013-06-20 22:18:27
这两种说法没有矛盾之处。
当您按下回键时,onDestroy将被调用,除非您重写onBackPressed,不调用finish(),或者执行重写finish和不调用super.finish()的奇怪操作。
如果您不停止对Activity.finish的调用,则总是调用。
另一条声明没有提到按住,我在你这里提供的链接下找不到任何东西
如果系统资源不足,则只销毁。
另外,当应用程序资源不足时(奇怪的是,在我的手机上没有这样的情况;我得到了OOM),就会调用onDestroy,在此之后,在全球范围内(从所有应用程序中)启动20个其他活动时,就会调用OOM。
我还请您再次查看关于何时调用onDestroy的另一个答案,原因是onDestroy没有被调用。
发布于 2013-06-20 22:04:18
它们在各自的语境中都是正确的。也许生命周期应该说“只有当系统资源不足时,或才会从堆栈中弹出”。
举个例子吧。你从活动A开始,然后从A开始活动B,然后从B开始活动C。
现在按下活动C的后退按钮,您将返回到活动B
现在再按后退按钮,你又回到活动A了
系统尝试保留所有活动实例,以便能够快速重新打开它们。但是,当一个活动从堆栈中弹出时,用户就无法在将来重新打开它们,至少不是同一个实例。
https://stackoverflow.com/questions/17224325
复制相似问题