Android Activity 应用程序在后台时调用 onStart?

Android Activity onStart called while app is in the background?

我遇到了一种奇怪的行为,似乎只发生在 android 10+:

当我的 activity 处于后台时,我将打开 Android 设置,转到系统 -> 手势 -> 系统导航 -> 在手势导航和 2 键导航之间切换。

当我切换这些设置时,我的应用程序(在后台 运行)重新创建了我的 activity,并且这个新的 activity 收到了对 onStart 的调用, 然后在 onStop.

之后

顺便说一句,此行为在此设置流程中可 100% 重现,但也可能在应用程序处于后台时看似随机发生。

根据我的理解,当 Activity 仍在后台时,它们永远不应该调用 onStart,即使它们由于某种原因被 OS 销毁......还是我说错了?

由于我的应用程序中的某些功能使用在 onStart 中调用的第 3 方库,因此当 activity 实际上在背景。

有没有其他人遇到过这种情况?除了在我的 onStart 代码中添加延迟逻辑(然后如果紧随 onStop 就中止),还有什么可以防止这种情况发生的吗?

onStart() 将在后台调用应用程序。没有任何内容表明 Android 不会这样做。您唯一可以真正依赖的是 onResume()onPause()onResume()Activity 位于前台并获得用户焦点时调用。 onPause()Activity 获得用户焦点并且 Android 将用户焦点转移到另一个 Activity 时调用。

看起来,在您的情况下,Android 导致配置更改传播到所有应用程序,这可能是您看到后台应用程序像这样被“唤醒”的原因,但这是只是我的猜测。