我如何知道我的Android应用程序是否在前台,包括在显示中间广告时?

我如何知道我的Android应用程序是否在前台,包括在显示中间广告时?,android,Android,在阅读了诸如“我如何知道我的Android应用程序是否在后台/前台”等问题的所有答案后,我仍然不确定在运行中间程序时该怎么办 基本上是通过手动跟踪onPause和onResume或使用谷歌新的lifecycle库来自己跟踪它。这很好,但是假设您控制所有活动的代码,当一个非您自己的Activity的间隙运行时,此方法将不适用于它 其他答案包括调用ActivityManager.getRunningAppProcesses()或ActivityManager.getRunningTasks()。这些

在阅读了诸如“我如何知道我的Android应用程序是否在后台/前台”等问题的所有答案后,我仍然不确定在运行中间程序时该怎么办

基本上是通过手动跟踪
onPause
onResume
或使用谷歌新的
lifecycle
库来自己跟踪它。这很好,但是假设您控制所有活动的代码,当一个非您自己的
Activity
的间隙运行时,此方法将不适用于它

其他答案包括调用
ActivityManager.getRunningAppProcesses()
ActivityManager.getRunningTasks()
。这些当然不推荐,也不应该使用。我还猜测未来的政策变化可能会限制这一点

那么,即使在播放插播广告时,我怎么知道我的应用程序是否在前台呢


因为有人可能会问我为什么要知道这些。我的应用程序使用
WebView
WebView
有一个让
Javascript
继续运行的坏习惯,即使在
WebView
上调用了
onPause()
。我发现停止它的唯一方法是运行
webView.pauseTimers()
,但该方法适用于所有的webView,而不仅仅是您调用它的webView。因此,如果在间隙ad之前,在我的
活动
上调用我的
onPause()
时,我将其启用,那么间隙ad可能会冻结,甚至可能会出现错误。

如果您有应用程序类,您可以使用该类跟踪

public class StarterApplication extends Application implements LifecycleObserver {
 @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
  public void onAppBackgrounded() {
    //App in background ,do your background stuff
    Log.d( "onAppBackgrounded: ","called");

}

 @OnLifecycleEvent(Lifecycle.Event.ON_START)
  public void onAppForegrounded() {
    // App in foreground,do your foreground stuff
    Log.d("onAppForegrounded: ","called");

}

您不需要通过调用
getLifecycle().addObserver()
LifecycleObserver
添加到每个
活动中吗?这对
中间人不起作用,因为我无法控制他们活动的代码。