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

时间:2016-07-07 07:58:59

标签: android android-activity android-lifecycle onpause

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

我可以想到为什么我的Activity可以被暂停/停止的一些原因,以及一些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时。我还没有能够复制,但没有结果。

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

1 个答案:

答案 0 :(得分:0)

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

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