我怎么知道我的应用程序是否在后台?

我需要根据远程事件从我的应用程序开始一个前台服务。 大多数情况下,用户会在应用程序中看到该应用程序,而在少量时间用户将在不同的应用程序上,或者屏幕将会关闭。

所以我想要在Android 8+上决定是否应该根据应用程序是否在后台调用startServicestartForegroundService 。 那我怎么知道这个?

编辑:我确实看到另一个答案,你可以保持onPauseonResume标志,但我希望现在会有一个更好的办法?

来自Google I / O 2016的Kotlin解决方案

 class YourApplication : Application() { override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(AppLifecycleTracker()) } } class AppLifecycleTracker : Application.ActivityLifecycleCallbacks { private var numStarted = 0 override fun onActivityStarted(activity: Activity?) { if (numStarted == 0) { // app went to foreground } numStarted++ } override fun onActivityStopped(activity: Activity?) { numStarted-- if (numStarted == 0) { // app went to background } } }