Android Activity 的生命周期是什么? Why are so many similar sounding methods ( onCreate()
, onStart()
, onResume()
) called during initialization, and so many others ( onPause()
, onStop()
, onDestroy()
) 最后调用?
这些方法什么时候调用,应该如何正确使用?
原文由 Nav 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Activity Lifecycle (在 Android Developers)中查看它。
onCreate() :
重启() :
开始() :
onResume() :
暂停() :
停止() :
onDestroy() :
当 Activity 第一次加载时,事件调用如下:
当您 点击电话按钮 时,活动进入后台并调用以下事件:
退出电话拨号程序,将调用以下事件:
当您单击 后退按钮 或尝试 完成() 活动时,事件调用如下:
活动状态
Android 操作系统使用优先级队列来协助管理设备上运行的活动。根据特定 Android 活动所处的状态,它将在操作系统中分配特定的优先级。此优先级系统可帮助 Android 识别不再使用的活动,从而允许操作系统回收内存和资源。下图说明了活动在其生命周期中可以经历的状态:
这些状态可以分为以下三个主要组:
活动或运行- 如果活动位于前台,也称为活动堆栈的顶部,则活动被视为活动或正在运行。这被认为是 Android Activity 堆栈中优先级最高的 Activity,因此只会在极端情况下被操作系统终止,例如如果 Activity 试图使用比设备上可用的内存更多的内存,因为这可能会导致 UI变得反应迟钝。
已暂停- 当设备进入睡眠状态,或活动仍然可见但被新的、非全尺寸或透明活动部分隐藏时,该活动被视为已暂停。暂停的活动仍然存在,也就是说,它们保留所有状态和成员信息,并保持与窗口管理器的关联。这被认为是 Android Activity 堆栈中优先级第二高的 Activity,因此,只有在终止此 Activity 将满足保持 Active/Running Activity 稳定和响应所需的资源要求时,才会被操作系统终止。
已 停止- 被另一个活动完全遮挡的活动被视为已停止或处于后台。已停止的 Activity 仍会尝试尽可能长时间地保留其状态和成员信息,但已停止的 Activity 被认为是三种状态中优先级最低的,因此,操作系统将首先终止处于该状态的 Activity 以满足资源需求更高优先级的活动。
*示例活动以了解生命周期**