Android 点击主页按钮后立即调用 onStop

Android onStop gets called right after tap home button

我有一个关于 Android 基本功能的快速问题。很明显,当屏幕部分可见时会调用 onPause。进一步的 onStop 据说只有当屏幕不再处于前景或背景中时才会被调用。

但奇怪的是,当我按下 phone 上的方形主页按钮时,每次 activity 都会调用 onStop。尽管 activity 屏幕部分可见,但我在后台显示 0.5 - 1 秒后看到了日志。这会导致在从简单暂停返回时调用 onRestart。因为我试图在这里展示一个广告,所以这有点问题。我在 Samsung Galaxy A51 和 Pixel 3 XL API 30 模拟器上进行了测试,结果相同。

目前我想知道为什么要在这里调用这个方法,想修正我的理解。我很可能遗漏了一些明显的东西,如果是这样的话(内存不足?),我深表歉意。下面是带有系统日志和 activity 生命周期图的屏幕截图。我在任何点击之前显示,在 1 次点击后显示日志 window,然后在返回并第二次点击后显示日志 window。

这个暂停按钮是什么?如果您指的是电源按钮或主页按钮,则不应有直接连接 Activity 生命周期 onPause.

的硬件按钮

当您按下电源按钮或主页按钮时,它会进入锁定屏幕或 Recents screen,在这两种情况下,您的应用肯定会停止(onPause 然后 onStop)不仅仅是暂停(仅 onPause)。

看来从onPause直接onResume的情况比较少见。

onPause()

  • 在 Android 7.0(API 级别 24)或更高版本中,多个应用程序 运行 处于 multi-window 模式。因为在任何时候只有一个应用程序 (windows) 具有焦点,所以系统会暂停所有其他应用程序。
  • 一个新的半透明 activity(例如对话框)打开。只要 activity 仍然部分可见但未聚焦,它就会保持暂停状态。

关于后一种情况,你可以在Whosebug上找到answer

因此,如果您的应用未编码为导致直接 onPauseonResume 生命周期,您的应用应该在 onPause 之后正常进入 onStop行为。