Android:检测其他活动何时启动(或您的活动失去焦点)

Fly*_*wat 10 android

就像标题所说,我需要检测我的应用程序何时失去焦点,因为启动了另一个应用程序(电话呼入,或用户点击主页等).

覆盖Activity.OnStop不起作用,因为即使在我的应用程序中切换活动时也会调用它.

小智 5

我相信你可以使用:

onWindowsFocusChanged(boolean hasFocus)

来自你的活动.


Com*_*are 3

AFAIK Android 没有提供这方面的设施。您也许可以自己跟踪这一点(例如,如果onStop()您的一个活动被调用,而onStart()您的另一个活动在 X 时间段内没有被调用,则可能是其他应用程序的活动位于前台)。

  • 那么这应该会让事情变得更容易。使用静态 AtomicInteger 来维护活动活动的计数。在静态初始值设定项中将其设置为 0。在所有活动的 onStart() 中增加它。在所有活动的 onStop() 中减少它。如果在 onStop() 中,递减后该值为 0,则您知道您在屏幕上已有 15 秒没有任何活动,因此可能已经消失了一段时间。就我个人而言,我建议您不必担心您所担心的任何事情,因为 Android 的设计初衷并不是为了促进应用程序边界。 (2认同)