我正在Android中开发一个具有多个活动的应用程序,只有在应用程序最小化和最大化时才需要检查一些细节,而不是在活动屏幕的导航上。 onPause()
和onResume()
不起作用。 onWindowFocusChanged()
也没有帮助,因为在屏幕之间导航时也会调用。请帮助我以哪种方式只能在应用程序最小化/最大化时才能获得事件,而不是在屏幕导航上。
答案 0 :(得分:1)
我认为这个Activity回调onUserLeaveHint()可能是一个开始。
来自doc:
当活动即将到来时,被称为活动生命周期的一部分 作为用户选择的结果进入后台。例如,何时 用户按下Home键,将调用onUserLeaveHint(),但是 当来电通话导致通话活动时 自动带到前台,onUserLeaveHint()不会 呼吁活动被打断。在调用它的情况下, 在活动的onPause()回调之前调用此方法。
此回调和onUserInteraction()旨在帮助活动 智能地管理状态栏通知;特别是 帮助活动确定取消通知的适当时间。
答案 1 :(得分:0)
这不是Android上常见的东西,所以我同意CommonsWare,你应该考虑采用不同的方法。
然而,有一种(有点hacky)方法来实现这一目标。
在您的每项活动中覆盖onStop()
和onResume()
,在boolean
中设置true
到onResume()
,在false
设置为onStop()
。如果这是true
,则应用程序处于活动状态,如果它是false
则不是。
您可以使用在设置boolean
值后始终调用的侦听器来执行您的操作。
答案 2 :(得分:-2)
如果您可以添加属性,请在自定义的Application对象中将其命名为isShown,这意味着您需要为此目的扩展应用程序。它位于Application的子类中,它是一个符号。
实现 onPause 和 onResume 的生命周期方法,当调用 onPause 时,表示活动将转到后台,不再隐形,或放入活动堆栈。 onResume 表示已恢复活动状态并为用户的交互做好准备。因此,如果您将isShown属性设置为false(位于应用程序对象中),在活动的 onPause 中,并在 onResume 中将其设置为true。对于原因,您可以将此行为提取到超类中以供重用。
使用 onPause 和 onResume 的合成,并且在给定时间内我们可以识别最小/最大化状态。比方说,isShown暂时设置为false,我们可以说它是最小化的。否则,我们也可以解释最大化。
但是你打算用这面旗子做什么?你是否仍然有一个服务在后端运行,准备接收这个属性做什么?