我对两个活动的生命周期有点困惑。

假设我有活动 A 和活动 B。

B 被称为来自 A,即 A ----> B.

现在目前 B 出现在屏幕上,我按下了后退按钮。我想知道:- 是否还有可用的内存 B(主动)或 B的内存被刷新(非活动)。

有帮助吗?

解决方案

假设有一个活动 A,您从中启动活动 B。如果在活动 B 中按下后退按钮,则会将活动 B 从堆栈中弹出,并且 B 将不再位于活动堆栈中。

每当您将 Activity 推入堆栈时, onCreate 被调用,如果你按后退按钮, onDestroy 被调用,这意味着该活动被冲走。

stack

请访问我的博客以获取更多信息:http://upadhyayjiteshandroid.blogspot.in/2013/02/android-lifecycle.html

activity lifecycle请访问了解更多

http://developer.android.com/guide/components/tasks-and-back-stack.html

http://developer.android.com/training/basics/activity-lifecycle/starting.html

其他提示

按下后退按钮后,将调用以下活动回调方法。

onPause()
onStop()
onDestroy()

活动被破坏。

再次启动时它会重新创建。这些是再次启动时的回调方法。

onCreate()
onStart()
onResume()

onDestroy 后按后调用该方法。然后 Activity 将从 Activity 返回堆栈中弹出。

来自文档:

如果活动暂停或停止,系统 可以从内存中删除该活动 要么要求它完成,要么干脆终止它的进程。当它再次显示给用户时,必须完全重新启动并恢复到之前的状态。

onDestroy() 来自文档:

您的活动被销毁之前收到的最后一个电话。这可能是因为活动即将完成(有人称为 finish() 就可以了,或者是因为系统暂时 销毁该活动实例以节省空间. 。您可以使用以下命令区分这两种情况 isFinishing() 方法。

enter image description here

我知道答案已被接受,但如果这对某人有帮助,我仍然会提出来。

当应用程序第一次打开时,通过单击图标

onCreate()
onStart()
onResume()

当按下主页按钮时

onPause()
onStop()

当通过单击应用程序图标再次打开应用程序或从最近启动的应用程序时

onRestart()
onStart()
onResume()

当应用程序打开然后按下后退按钮时

onPause()
onStop()
onDestroy()

Activity B 将被销毁并且不再保留在内存中。

欲了解更多信息,请访问 安卓官方文档 并查看活动生命周期图。

一旦按下后退键,活动的 onDestroy() 方法将被调用,并且活动将从内存中刷新。然后,您将需要通过调用 startActivity() 方法来重新启动活动,该方法又将调用其 onCreate() 方法。

我建议参考以下链接了解活动生命周期

http://stackoverflow.com/a/8516056/3110609

以及以下活动启动模式的链接。

www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

按后退按钮后,Activity B 将被销毁。你看,Android 管理活动就像 栈(栈的解释). 。每次启动一个活动时,它都会推入活动堆栈。因此,当 Activity A 调用 Activity B 时,Activity B 现在位于 Activity B 之上,并且当您按下后退按钮时,它也会在 Activity Stack 中弹出。所以从概念上来说,Activity B 已经消失了。按主页按钮与按返回不同,它会暂停活动,因此它仍然会消耗一点手机内存。

这里 很好地解释了 Android 如何管理 Activity。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top