从推送打开应用程序时 Activity 生命周期回调的不同调用顺序

Different call sequence of the Activity lifecycle callbacks while opening app from the push

我在从推送通知打开应用程序时看到了一个奇怪的行为。
有2种情况:
1) 应用程序处于后台且设备已解锁;
2) 应用程序处于后台且设备已锁定。

当设备收到推送通知时,我点击它,我的应用程序启动(如果需要,设备屏幕正在解锁)并且我看到以下顺序的 Activity生命周期回调:
1) 在第一种情况下 - onResume 被调用一次;
2) 在第二种情况下 - onResume -> onPause -> onResume

我对第二种情况感兴趣。第二个 onResume 的电话我明白了。

为什么Android调用onPause的回调?
它是我的应用程序设置中的默认行为还是问题(例如我的 Activity 中的特定启动模式)?
任何人都可以帮助我了解第二种情况以及如何避免它?

Whosebug 上有很多关于 onResume()onPause() 被多次调用并结合使用锁屏的相关问题。这似乎是一个普遍的问题。通常,onPause()onResume() 可以被调用多次,也可以快速连续调用,您的应用程序需要足够强大才能处理这种情况。

参见:

  • Android Activity lifecycle and locking/unlocking device
  • onResume being called over and over while phone screen is locked
  • Locking screen of Android phone results in several subsequent onPause/onResume events
  • Lock screen triggers application lifecycle events of different activity