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