我对两个活动的生命周期感到困惑。
假设我有活动A和活动B.
B从A调用,即A ----> B
。
现在屏幕上显示B
,我按下了按钮。在这里,我想知道: - 是否有任何内存仍然可用于B
(活动)或B
的内存被刷新(非活动)。
答案 0 :(得分:56)
假设有一个活动A,您可以从中启动活动B.如果在活动B中,您点击后退按钮,则您将活动B从堆栈中弹出,B将不再在活动堆栈中。
每当您将活动推送到堆栈时,都会调用onCreate
,如果您按回按钮,则会调用onDestroy
,这意味着该活动已被清除。
请访问我的博客以获取更多信息: http://upadhyayjiteshandroid.blogspot.in/2013/02/android-lifecycle.html
请访问以获取更多信息
http://developer.android.com/guide/components/tasks-and-back-stack.html
http://developer.android.com/training/basics/activity-lifecycle/starting.html
答案 1 :(得分:16)
按下后退按钮后,将调用以下活动回调方法。
onPause()
onStop()
onDestroy()
活动被破坏。
再次发布时它会重新创建。这些是再次启动时的回调方法。
onCreate()
onStart()
onResume()
答案 2 :(得分:7)
在按下后调用onDestroy
方法。然后,活动将从活动堆栈中弹出。
如果活动暂停或停止,系统可以通过要求完成活动来删除内存中的活动,或者只是终止其进程。当它再次显示给用户时,必须完全重新启动并恢复到之前的状态。
onDestroy()
from docs:
在您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在结束(有人在其上调用
finish()
,或者因为系统暂时销毁此活动实例以节省空间。您可以区分这两种情况使用isFinishing()
方法。
答案 3 :(得分:2)
活动B将被销毁,不再保留在内存中。
有关详细信息,请访问official documentation for android并查看活动生命周期数字。
按下后退键后,将调用活动的onDestroy()方法,并将活动从内存中刷新。然后,您将需要通过调用startActivity()方法重新启动活动,该方法将依次调用其onCreate()方法。
答案 4 :(得分:1)
我知道答案已经被接受,即使这对我提出的建议有所帮助。
应用程序首次打开时,通过点击图标
onCreate()
onStart()
onResume()
按下主页按钮
onPause()
onStop()
通过单击应用程序图标再次打开该应用程序或从最近启动该应用程序
onRestart()
onStart()
onResume()
打开应用程序,然后按返回按钮
onPause()
onStop()
onDestroy()
答案 5 :(得分:0)
我建议在活动生命周期中引用以下链接
http://stackoverflow.com/a/8516056/3110609
以及以下活动启动模式的链接。
www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
答案 6 :(得分:0)
按下后退按钮后,活动B将被销毁。你看,Android管理活动就像一个Stack(an explanation of a stack)。每次启动活动时,它都会进入活动堆栈。因此,当活动A调用活动B时,活动B现在位于活动B之上,当您按下后退按钮时,它也会在活动堆栈中弹出。所以在概念上,活动B已经消失了。按Home键不同于按回,它会暂停Activity,因此它仍会占用手机的一小部分内存。
Here很好地解释了Android管理活动的方式。