如何区分调用 Activity 的 onPause() 的不同原因?

How to differentiate between different causes that an Activity's onPause() is called?

我需要弄清楚为什么我的 Activity 的 onPause/onStop 被调用,特别是另一个 Activity(尤其是来自另一个应用程序)是否已替换它。

我能想到我的 Activity 可能是 paused/stopped 的一些原因,以及一些 Activity 生命周期方法(onUserLeaveHint、onBackPressed、onPause、onStop、onDestroy , isFinishing) 这可能会帮助我区分它们,但到目前为止我还没有能够完成它。他们在这里:

Turn off display:
onPause - isFinishing FALSE
onStop - isFinishing FALSE

Back button:
onBackPressed - isFinishing TRUE
onPause - isFinishing TRUE
onStop - isFinishing TRUE
onDestroy - isFinishing TRUE

Home button:
onUserLeaveHint - isFinishing FALSE
onPause - isFinishing FALSE
onStop - isFinishing FALSE

Task switcher:
onUserLeaveHint - isFinishing FALSE
onPause - isFinishing FALSE
onStop - isFinishing FALSE

New Activity:
onUserLeaveHint - isFinishing FALSE
onPause - isFinishing FALSE
onStop - isFinishing FALSE

值得注意的是 Android 低内存杀手杀死了我的 Activity。我还没有能够重现,因此没有结果。

因此,我能够区分何时按下后退按钮以及何时关闭显示屏。但是,按主页按钮、任务切换器和启动新的 activity 在编程上对我来说是相同的。我如何区分它们?

好的,我最后做了一些事情来区分不同的情况:

在 onBackPressed() 中设置一个标志来检测后退按钮 检查服务中的新前台应用程序以检测启动器和任务切换器。 在新的前台应用程序的所有其他情况下,通知用户。