且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何知道我的应用程序是在前台还是后台,android?

更新时间:2023-10-18 08:27:52

原答案:https://***.com/a/60212452/10004454根据 Android 文档推荐的方法是

Original Answer : https://***.com/a/60212452/10004454 The recommended way to do it in accordance with Android documentation is

class MyApplication : Application(), LifecycleObserver {

override fun onCreate() {
    super.onCreate()
    ProcessLifecycleOwner.get().lifecycle.addObserver(this);
}

fun isActivityVisible(): String {
    return ProcessLifecycleOwner.get().lifecycle.currentState.name
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onAppBackgrounded() {
    //App in background

    Log.e(TAG, "************* backgrounded")
    Log.e(TAG, "************* ${isActivityVisible()}")
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onAppForegrounded() {

    Log.e(TAG, "************* foregrounded")
    Log.e(TAG, "************* ${isActivityVisible()}")
    // App in foreground
}}

在您的 gradle(应用程序)中添加:implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"

In your gradle (app) add : implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"

然后在运行时检查状态调用 MyApplication().isActivityVisible()

Then to check the state at runtime call MyApplication().isActivityVisible()