Android 始终使用“后退”按钮调用Intent onDestroy()

Android 始终使用“后退”按钮调用Intent onDestroy(),android,Android,在我遇到的关于这个话题的其他帖子中,我似乎都有相反的观点。其他人发现onDestroy()并不总是被调用,但我发现它总是并且立即被调用 我正在检查是否通过以下方式调用它: @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } 此日志代码在单击“上一步”或使用my actionbar按钮(仅调用home活动作为意图)后立即触发 我环顾四周,但每个人都说生命周期应该是

在我遇到的关于这个话题的其他帖子中,我似乎都有相反的观点。其他人发现onDestroy()并不总是被调用,但我发现它总是并且立即被调用

我正在检查是否通过以下方式调用它:

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
}
此日志代码在单击“上一步”或使用my actionbar按钮(仅调用home活动作为意图)后立即触发

我环顾四周,但每个人都说生命周期应该是这样的:

这种行为不仅限于单个应用程序;我试着下载一些示例代码并添加上面的调试代码,结果却发现了相同的行为。它也不限于单一的安卓版本;我在模拟器中尝试了2.1和2.3,在物理设备上也尝试了4.0.2


你知道我可能做错了什么吗?

返回键实际上会触发活动的
finish()
方法,并导致活动暂停->停止->销毁


因此,从技术上讲,此行为的功能与预期一致。

其他人似乎对此表示异议,其他人使用额外的代码在onPause()内调用finish以确保其活动被销毁。无论如何,我发现即使调用了home活动,也会调用onDestroyed(),我相信这对应于生命周期图上的“另一个活动进入前台”。不,这就是活动周期的实际工作方式。若按Home键,onDestroy可能不会被呼叫(取决于手机是否在内存不足的情况下运行),但onStop会被呼叫。若你们按下后退键,onDestroy就会被调用。我认为你应该创建一个带有活动的测试应用程序,并在每个on事件上记录消息,以便深入观察。感谢你的帮助清除Waqas,你确实是正确的。android文档中的措辞让我认为onDestroyed()应该只在内存不足时调用,但应该在按Back键时调用。博客文章解释了这一点。你好@waqaslam。onDestroy()是否不停止应用程序在后台运行?。因为如果在调用onDetroy()之后,我仍然会在“运行应用程序”列表中看到我的应用程序。@Jaikrat'onDestroy'只保证
活动
顺利完成。它不会破坏应用程序上下文,这也是应用程序出现在正在运行的应用程序中的原因。当系统认为需要释放资源时,应用程序上下文会被系统本身破坏(除非用户强制停止)。