查看应用是否在前台

30 阅读1分钟
ProcessLifecycleOwner.get().lifecycle.addObserver(LifecycleObserver observer) 

ProcessLifecycleOwner.get().lifecycle.addObserver(object: DefaultLifecycleObserver {
    override fun onCreate(owner: LifecycleOwner) {
        super.onCreate(owner)
    }

    override fun onStart(owner: LifecycleOwner) {
        super.onStart(owner)
    }

    override fun onResume(owner: LifecycleOwner) { // 应用前台
        super.onResume(owner)
    }

    override fun onPause(owner: LifecycleOwner) { // 应用后台
        super.onPause(owner)
    }

    override fun onStop(owner: LifecycleOwner) {
        super.onStop(owner)
    }

    override fun onDestroy(owner: LifecycleOwner) {
        super.onDestroy(owner)
    }
})

ProcessLifecycleOwner.get().lifecycle.addObserver(object: LifecycleEventObserver {
    override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
        when (event) {
        	Lifecycle.Event.ON_CREATE -> {
        		Log.e("ProcessLifecycleOwner", "ON_CREATE")
        	}
            Lifecycle.Event.ON_START -> {
                Log.e("ProcessLifecycleOwner", "ON_START")
            }
            Lifecycle.Event.ON_RESUME -> { // 应用前台
                Log.e("ProcessLifecycleOwner", "ON_RESUME")
            }
            Lifecycle.Event.ON_PAUSE -> { // 应用后台
                Log.e("ProcessLifecycleOwner", "ON_PAUSE")
            }
            Lifecycle.Event.ON_STOP -> {
                Log.e("ProcessLifecycleOwner", "ON_STOP")
            }
            else -> {}
        }
    }
})

判断当前activity

class MyApplication : Application() {
    // 使用弱引用避免内存泄漏
    private var currentActivityRef: WeakReference<Activity>? = null

    fun getCurrentActivity(): Activity? {
        return currentActivityRef?.get()
    }

    override fun onCreate() {
        super.onCreate()
        // 注册生命周期回调
        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
            override fun onActivityResumed(activity: Activity) {
                // 当某个 Activity 进入前台时,更新当前 Activity 引用
                currentActivityRef = WeakReference(activity)
            }
            // 其他生命周期方法可以根据需要实现,例如 onActivityPaused 或 onActivityDestroyed
            override fun onActivityPaused(activity: Activity) {}
            override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
            override fun onActivityStarted(activity: Activity) {}
            override fun onActivityStopped(activity: Activity) {}
            override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
            override fun onActivityDestroyed(activity: Activity) {
                // 当 Activity 被销毁时,如果它是当前 Activity,则清空引用
                if (getCurrentActivity() == activity) {
                    currentActivityRef = null
                }
            }
        })
    }
}