Android 我如何判断我的应用程序是否在后台?
我需要根据远程事件从我的应用程序启动前台服务。大多数情况下,用户会在应用程序上,并且应用程序会可见,但在少量情况下,用户会在不同的应用程序上,或者屏幕会关闭 因此,我希望有一个逻辑来决定Android 8+是否应该调用Android 我如何判断我的应用程序是否在后台?,android,Android,我需要根据远程事件从我的应用程序启动前台服务。大多数情况下,用户会在应用程序上,并且应用程序会可见,但在少量情况下,用户会在不同的应用程序上,或者屏幕会关闭 因此,我希望有一个逻辑来决定Android 8+是否应该调用startService或startForegroundService,这取决于应用程序是否在后台。那我怎么知道呢 编辑:我确实在另一个答案上看到,你可以只为暂停和恢复保留一个标志,但我希望现在有更好的方法?谷歌I/O 2016的Kotlin解决方案 class YourAppli
startService
或startForegroundService
,这取决于应用程序是否在后台。那我怎么知道呢
编辑:我确实在另一个答案上看到,你可以只为
暂停
和恢复
保留一个标志,但我希望现在有更好的方法?谷歌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
}
}
}
我已经看到了这个答案,但它是从2011年开始的,这真的是最好的方法吗?谢谢,我会尝试一下。另一种方法是使用arch的
ProcessLifecycleOwner
。组成部分-