0

我正在 Android 中开发一个具有多个活动的应用程序,并且仅在应用程序最小化和最大化时才需要检查一些详细信息,而不是在活动屏幕的导航上。onPause()并且onResume()不起作用。onWindowFocusChanged()也无济于事,因为在屏幕之间导航时也会调用。请帮助我只有在应用程序被最小化/最大化时才能获得事件,而不是在屏幕导航上。

4

3 回答 3

1

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

来自文档:

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

这个回调和 onUserInteraction() 旨在帮助活动智能地管理状态栏通知;具体来说,用于帮助活动确定取消通知的适当时间。

于 2013-11-13T15:31:22.873 回答
0

这在 Android 上并不常见,所以我同意CommonsWare,你应该考虑一种不同的方法。

尽管如此,有一种(有点老套)的方法来实现这一点。
覆盖onStop()andonResume()在您的每个活动中,设置 a booleanto trueinonResume()和 to falsein onStop()。如果是true,则应用程序处于活动状态,如果是false则不是。您可以使用在设置值
后始终调用的侦听器来执行您的操作。boolean

于 2013-11-13T15:27:33.647 回答
-2

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

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

通过onPauseonResume的组合,以及给定的时间,我们可以识别最小/最大化状态。比方说,isShown 被设置为 false 一段时间,我们可以说它被最小化了。否则,我们也可以解释最大化。

但是你打算用这面旗帜做什么?您是否还有在后端运行的服务准备接收此属性来做某事?

于 2013-11-13T15:15:14.630 回答