feat: 添加前后台状态变化监听
This commit is contained in:
@ -5,6 +5,7 @@ import android.app.Application
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import com.quyunshuo.androidbaseframemvvm.base.utils.ActivityStackManager
|
||||
import com.quyunshuo.androidbaseframemvvm.base.utils.ForegroundBackgroundHelper
|
||||
|
||||
/**
|
||||
* Activity生命周期监听
|
||||
@ -23,6 +24,7 @@ class ActivityLifecycleCallbacksImpl : Application.ActivityLifecycleCallbacks {
|
||||
|
||||
override fun onActivityStarted(activity: Activity) {
|
||||
Log.e(TAG, "${activity.javaClass.simpleName} --> onActivityStarted")
|
||||
ForegroundBackgroundHelper.onActivityStarted()
|
||||
}
|
||||
|
||||
override fun onActivityResumed(activity: Activity) {
|
||||
@ -35,6 +37,7 @@ class ActivityLifecycleCallbacksImpl : Application.ActivityLifecycleCallbacks {
|
||||
|
||||
override fun onActivityStopped(activity: Activity) {
|
||||
Log.e(TAG, "${activity.javaClass.simpleName} --> onActivityStopped")
|
||||
ForegroundBackgroundHelper.onActivityStopped()
|
||||
}
|
||||
|
||||
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
|
||||
|
||||
@ -0,0 +1,84 @@
|
||||
package com.quyunshuo.androidbaseframemvvm.base.utils
|
||||
|
||||
/**
|
||||
* 前后台切换帮助类,该类实现了前后台监听以及支持注册变化响应监听
|
||||
*
|
||||
* @see ForegroundBackgroundObserver
|
||||
* @see ForegroundBackgroundSubject
|
||||
*
|
||||
* @author Qu Yunshuo
|
||||
* @since 2023/5/31 14:22
|
||||
*/
|
||||
object ForegroundBackgroundHelper : ForegroundBackgroundSubject {
|
||||
|
||||
private var mActivityStartCount = 0
|
||||
|
||||
private var mIsForeground = false
|
||||
|
||||
private val mObservers = mutableListOf<ForegroundBackgroundObserver>()
|
||||
|
||||
fun onActivityStarted() {
|
||||
mActivityStartCount++
|
||||
if (mActivityStartCount == 1) {
|
||||
mIsForeground = true
|
||||
notifyObservers()
|
||||
}
|
||||
}
|
||||
|
||||
fun onActivityStopped() {
|
||||
mActivityStartCount--
|
||||
if (mActivityStartCount == 0) {
|
||||
mIsForeground = false
|
||||
notifyObservers()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通知所有订阅者状态变化
|
||||
*/
|
||||
override fun notifyObservers() {
|
||||
mObservers.forEach {
|
||||
it.foregroundBackgroundNotify(mIsForeground)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加订阅者
|
||||
*
|
||||
* @param observer ForegroundBackgroundObserver
|
||||
*/
|
||||
override fun addObserve(observer: ForegroundBackgroundObserver) {
|
||||
mObservers.add(observer)
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除订阅者
|
||||
*
|
||||
* @param observer ForegroundBackgroundObserver
|
||||
*/
|
||||
override fun removeObserver(observer: ForegroundBackgroundObserver) {
|
||||
mObservers.remove(observer)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订阅者需要实现的接口
|
||||
*
|
||||
* @author Qu Yunshuo
|
||||
* @since 2023/5/31 14:23
|
||||
*/
|
||||
interface ForegroundBackgroundObserver {
|
||||
fun foregroundBackgroundNotify(isForeground: Boolean)
|
||||
}
|
||||
|
||||
/**
|
||||
* 被观察者抽象主题
|
||||
*
|
||||
* @author Qu Yunshuo
|
||||
* @since 2023/5/31 14:24
|
||||
*/
|
||||
interface ForegroundBackgroundSubject {
|
||||
fun notifyObservers()
|
||||
fun addObserve(observer: ForegroundBackgroundObserver)
|
||||
fun removeObserver(observer: ForegroundBackgroundObserver)
|
||||
}
|
||||
Reference in New Issue
Block a user