onStop()总是以onPause()开头

use*_*662 9 android

我已经读过,无论方案是什么,对onStop()的调用总是先调用onPause().参考:图1在http://developer.android.com/training/basics/activity-lifecycle/stopping.html上

我们知道当一个活动没有用户的焦点但它仍然部分可见时暂停活动,并且当它根本不可见时停止.

现在,在用户处于活动状态并且从最近的应用程序窗口选择并输入另一个应用程序的情况下,活动将从恢复/运行进入停止状态.没有中间暂停状态.

不是吗?

在onStop()之前始终拥有onPause()的好理由是什么.我们可以在onStop()中做什么在onPause()中完成.为什么我们在onStop()之前总是需要onPause()?

Dav*_*ser 25

onPause()总是被称为.这是有保证的.如果您需要在活动中保存任何状态,则需要将其保存onPause().onStop()可以在之后调用onPause(),也可以不调用.取决于情况.

有很多生命周期方法.您不需要覆盖所有这些.您只需要覆盖您需要(或想要)自定义活动行为的那些.有许多生命周期方法,因为不同的应用程序有不同的要求.活动的生命周期记录良好且表现良好.这允许程序员根据应用程序的特定要求将代码准确地放在需要的位置.

你问过

在onStop()之前始终拥有onPause()的好理由是什么.我们可以在onStop()中做什么在onPause()中完成.

onPause()当Android想要做其他事情时,如果它在前台,则会始终调用您的Activity.它可能会启动另一个Activity,这可能会导致您的Activity onStop()被调用.它可能会调用onResume()您的活动.它可能会在不再调用生命周期方法的情况下终止您的进程.

由于onStop()无法保证被调用,因此您无法始终在onStop()中执行onPause()所执行的操作.

在大多数活动中,您会发现需要将代码放入onResume()和中onPause().你通常不需要做任何事情onStop(),onStart()onRestart().

  • @Boon又有什么意义?如果长按HOME键显示"最近的任务",则不会调用`onPause()`,但是`Activity`没有暂停,它仍然是屏幕上最重要的`Activity`.如果用户从"最近任务"列表中选择了某些内容,那么将在`Activity`上调用`onPause()`,如果用户没有选择某些内容,那么你的`Activity`仍然是最重要的`Activity`在屏幕上.这与你的`Activity`显示`Dialog`几乎相同.在这种情况下,`Dialog`覆盖了你的`Activity`的一部分,但你的`Activity`没有被暂停,...... (5认同)
  • ...`onPause()`没有调用你的`Activity`,你的`Activity`仍然是屏幕上最重要的`Activity`.无论如何,OP询问了`onPause()`和`onStop()`之间的区别.如果你的`Activity`被暂停,那么肯定会调用`onPause()`.如果您的应用程序被杀死,那么肯定会在最重要的`Activity`上调用`onPause()`,但是`onStop()`可能会被调用,也可能不被调用. (3认同)
  • 大卫,谢谢您的澄清。已投票。 (2认同)