Android - 是否有任何事件仅在应用程序最小化/最大化时触发

时间:2013-11-13 14:40:08

标签: java android

我正在Android中开发一个具有多个活动的应用程序,只有在应用程序最小化和最大化时才需要检查一些细节,而不是在活动屏幕的导航上。 onPause()onResume()不起作用。 onWindowFocusChanged()也没有帮助,因为在屏幕之间导航时也会调用。请帮助我以哪种方式只能在应用程序最小化/最大化时才能获得事件,而不是在屏幕导航上。

3 个答案:

答案 0 :(得分:1)

我认为这个Activity回调onUserLeaveHint()可能是一个开始。

来自doc:

  

当活动即将到来时,被称为活动生命周期的一部分   作为用户选择的结果进入后台。例如,何时   用户按下Home键,将调用onUserLeaveHint(),但是   当来电通话导致通话活动时   自动带到前台,onUserLeaveHint()不会   呼吁活动被打断。在调用它的情况下,   在活动的onPause()回调之前调用此方法。

     

此回调和onUserInteraction()旨在帮助活动   智能地管理状态栏通知;特别是   帮助活动确定取消通知的适当时间。

答案 1 :(得分:0)

这不是Android上常见的东西,所以我同意CommonsWare,你应该考虑采用不同的方法。

然而,有一种(有点hacky)方法来实现这一目标。
在您的每项活动中覆盖onStop()onResume(),在boolean中设置trueonResume(),在false设置为onStop() 。如果这是true,则应用程序处于活动状态,如果它是false则不是。
您可以使用在设置boolean值后始终调用的侦听器来执行您的操作。

答案 2 :(得分:-2)

如果您可以添加属性,请在自定义的Application对象中将其命名为isShown,这意味着您需要为此目的扩展应用程序。它位于Application的子类中,它是一个符号。

实现 onPause onResume 的生命周期方法,当调用 onPause 时,表示活动将转到后台,不再隐形,或放入活动堆栈。 onResume 表示已恢复活动状态并为用户的交互做好准备。因此,如果您将isShown属性设置为false(位于应用程序对象中),在活动的 onPause 中,并在 onResume 中将其设置为true。对于原因,您可以将此行为提取到超类中以供重用。

使用 onPause onResume 的合成,并且在给定时间内我们可以识别最小/最大化状态。比方说,isShown暂时设置为false,我们可以说它是最小化的。否则,我们也可以解释最大化。

但是你打算用这面旗子做什么?你是否仍然有一个服务在后端运行,准备接收这个属性做什么?