我需要弄清楚为什么调用我的活动onpause/onstop,特别是是否有其他活动(特别是来自另一个应用程序的活动)替换了它。
我可以想到一些原因,为什么我的活动可以暂停/停止,以及一些活动生命周期方法(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低内存杀手杀死我的活动时,我就不见了。我还没能复制出来,所以没有结果。
所以,我可以区分何时按下后退按钮,何时关闭显示器。但是,按Home按钮、任务切换程序和启动新活动在编程上与我完全相同。如何区分它们?

最佳答案

好吧,我最后做了一些事情来区分不同的情况:
在onbackpressed()中设置标志以检测后退按钮
检查服务中的新前台应用程序以检测启动程序和任务切换程序。
在所有其他情况下,新的前台应用程序,通知用户。

08-18 08:28