Android活动生命周期 - onPause()和onResume()

时间:2015-03-11 17:20:09

标签: android activity-lifecycle

Android developer diagram中,我发现在onResume()之前始终会调用onPause()。假设用户启动了新的Activity,为什么onPause()前面会onResume()

我的意思是:

可以在2个场景中调用OnResume:

1)当用户开始新活动时(OnPause之前)

2)当活动在后台并且用户将活动带回时 前景

我希望在每种情况下都应该做点别的事情。

3 个答案:

答案 0 :(得分:1)

你弄错了。每当创建活动时,在 onStart 之后立即调用 onResume 。每当您的活动返回时,都会调用 onPause 。再次,如果您的活动回到前台,则会调用 onResume 。因此,它不像在 onPause 之前调用 onResume 。每当活动从 onPause 状态返回时,将调用 onResume 而不是 onStart onCreate 。这种情况发生,因此Android不必一次又一次地创建Activity实例,尽管这些实例未被正确销毁。这也非常有效。

注意:如果您的应用正在运行且用户按返回按钮或主页按钮,则活动将通过 onPause () onStop()状态。在此之后,如果用户再次返回您的应用,那么将依次调用 onRestart() onStart() onResume()

然后当活动仅在 onPause()状态时?对话框出现在您的活动或您的活动之上时< strong>在分屏中显示,但没有焦点(用户没有与您的应用互动)。在这些情况下,活动仅进入 onPause()状态。

答案 1 :(得分:1)

  始终在onResume()

之前调用{p> onPause()

这是对的。首次启动活动时,onResume之前,以及恢复活动时(用户导航回您的活动),始终会调用onCreate

  

假设用户启动了一个新活动,为什么onPause()应该是。{1}}   前面是onResume()

onPause仅在将Activity置于后台时调用,或者在onDestroy之前调用,如果应用程序被销毁。因此onPause 始终在调用onResume之后被称为。为什么?因为这是Android框架定义的Activity的生命周期。

答案 2 :(得分:0)

活动的生命周期如下

  1. 通过onCreate(),onStart(),onResume ....重新启动,然后通过onPause()-> onStop()-> onDestroy()关闭
  2. 黄色背景:活动进入背景,因此不再可见。用户返回到活动。
    例如

    • 活动运行时关闭手机屏幕:onPause()-> onStop()
    • 再次打开屏幕:onStart()-> onResume()
  3. 绿色背景:活动停留在可见的屏幕区域中,但未处于活动状态 例如激活多个窗口(分屏),每个窗口占据屏幕的一部分,并提示您的应用程序处于活动状态

    • 在另一个应用程序上的提示:onPause()在应用程序进入暂停状态时被调用,但仍可见
    • 应用程序上的提示:onResume()被调用

activity life cycle

以下是带有两个应用程序的分屏示例:

split screen with two apps

请参阅android documentation on activity life cycle for details