【问题标题】:How can I tell if my app is in the background?如何判断我的应用程序是否在后台?
【发布时间】:2017-11-24 16:21:39
【问题描述】:

我需要根据远程事件从我的应用程序启动前台服务。大多数情况下,用户将在应用程序上并且应用程序将可见,但在少数情况下,用户将在不同的应用程序上或屏幕将关闭。

所以我想要有逻辑来决定 Android 8+ 是否应该根据应用程序是否在后台调用 startServicestartForegroundService。那我怎么知道呢?

编辑:我确实在另一个答案中看到,您可以为 onPauseonResume 保留一个标志,但我希望现在有更好的方法?

【问题讨论】:

标签: android


【解决方案1】:

来自 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
        }
      }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 2012-01-07
    • 2021-02-23
    • 1970-01-01
    • 2023-04-06
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多