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 导致配置更改传播到所有应用程序,这可能是您看到后台应用程序像这样被“唤醒”的原因,但这是只是我的猜测。
我遇到了一种奇怪的行为,似乎只发生在 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 导致配置更改传播到所有应用程序,这可能是您看到后台应用程序像这样被“唤醒”的原因,但这是只是我的猜测。