【问题标题】:How to differentiate between different causes that an Activity's onPause() is called?如何区分调用 Activity 的 onPause() 的不同原因?
【发布时间】:2016-07-07 07:58:58
【问题描述】:

我需要弄清楚为什么我的 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。我还不能重现,因此没有结果。

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

【问题讨论】:

  • 您可以在onKeyDown()中捕捉主页按钮
  • onKeyDown 未检测到主页按钮。
  • 为什么我被否决了?
  • 我不知道为什么这会被否决。也许是人们认为你没有必要区分这些情况,你的应用程序不应该关心。好吧,我需要知道(以减轻有关解除 Presentation 对象的 Android 错误),这就是我最终来到这里的方式。希望我的支持对您有所帮助!添加到列表中的另一个原因:方向变化。

标签: android android-activity android-lifecycle onpause


【解决方案1】:

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

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

【讨论】:

  • 在服务中检查新的前台应用程序以检测启动器和任务切换器?能详细点吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2012-07-08
相关资源
最近更新 更多