【问题标题】:Determine the reason why onPause was invoked确定调用 onPause 的原因
【发布时间】:2017-10-02 13:27:06
【问题描述】:

我正在创建一个应用程序,如果应用程序由于用户对设备的活动不足而自行关闭而暂停,我需要在其中执行某个操作,如果用户使用该设备,我需要执行另一个操作已自行将应用程序移至后台(例如通过按下主页按钮)。

那么有没有办法知道为什么onPause 被调用?或者任何其他不涉及使用onPause的方式?

【问题讨论】:

  • 你应该非常熟悉Activity Lifecycle
  • @AllLelopath 它没有回答我关于生命周期本身的问题
  • 这与活动生命周期无关!!!所以你需要的是一个状态机。您应该声明 3 个状态,并且在 onPause 中您应该通过处理适当的回调来检查调用了哪个状态。
  • @matrix 你能用代码示例写一个答案吗?问题是如何知道为什么应用程序处于暂停状态意味着确定适当的状态?
  • @YonatanNir 您可以通过跟踪堆栈中的活动数量和活动数量onStoponPause .. 因此您可以确保应用程序当前处于后台跨度>

标签: android onpause


【解决方案1】:

您可以使用几种方法来查看在 onPause 之前是否存在用户交互(onUserInteraction、onUserLeaveHint)。

Here 很好地展示了一些鲜为人知的生命周期方法。

【讨论】:

  • 哪一个可以告诉我暂停调用的原因?你能写一个代码示例吗?
  • onUserLeaveHint() - 和 onUserInteraction() 可以用于这个 developer.android.com/reference/android/app/… 文档说明可以在有交互的时​​候捕获事件,可以验证在这个方法之后是否调用了onPause . For example, when the user presses the Home key, onUserLeaveHint() will be called, but when an incoming phone call causes the in-call Activity to be automatically brought to the foreground, onUserLeaveHint() will not be called on the activity being interrupted.
  • 这里似乎需要 onUserLeaveHint
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2011-01-09
  • 2017-10-29
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多