Android生命周期:状态转换的说明

时间:2012-09-19 04:31:47

标签: android android-lifecycle

我想讨论Android生命周期。我知道Android生命周期如何运作的基础知识,但我想问一些问题。

  1. 为什么Android应用程序不会直接从运行停止为何首先进入暂停阶段?

  2. 为什么Android应用程序不会像iPhone应用程序那样直接从“运行”转移到“销毁”?为什么它会从Pause-> Stopped-> Destroy为什么不运行 - > Destroy?

1 个答案:

答案 0 :(得分:2)

主要出于性能原因,应用不会立即销毁。来自Android Developer Activity Reference

  

Android系统试图将应用程序进程保持为   尽可能长,但最终将需要删除旧进程   当内存不足时。

如果屏幕仍处于开机状态,并且您的设备无需释放内存,例如,如果活动只是暂停而不是完全销毁,则用户显然会更快。多个终端生命周期阶段使这成为可能。

各种回调表明不同的事情。这使您可以将清理功能分离为快速,关键的项目(与数据库或网络连接等系统资源断开连接)与长期任务(例如,在应用程序启动时保留用户数据)。因为您的活动尽可能长时间保持,所以当用户暂时暂停活动时,您可以避免昂贵的操作。

onPause()是第一个回调,表示您的活动不再在前台。例如,如果出现对话框或用户按下“主页”按钮,将暂停应用程序。例如,如果应用程序暂停了对话框,则您不希望它被销毁,因为它仍然可见。

如果您还收到onStop(),则表示您的活动不再可见。此时,用户不再看到您正在显示的内容。例如,这可能意味着用户打开了另一个应用程序。但是,即使在这一点上,系统仍然可以保持您的活动,以便用户以后更快地返回它。 (但是,如果您/用户结束了活动,那么它将不会被保留,并将继续进行结束生命周期回调。)

onDestroy()是活动销毁前的最终回调。请注意,在极端情况下,系统可能会在不调用此方法的情况下破坏您的活动。