diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index acab1e590..0f2c6d0b4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ java = "1.8" minSdk = "21" targetSdk = "32" -compileSdk = "33" +compileSdk = "34" buildTools = "32.0.0" agp = "7.4.2" @@ -49,6 +49,7 @@ androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common-java androidx-lifecycle-livedata = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "androidXLifecycle" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidXLifecycle" } androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidXLifecycle" } +androidx-lifecycle-process = { group = "androidx.lifecycle", name = "lifecycle-process", version = "2.7.0" } androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "navigation" } androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "navigation" } androidx-preference = { module = "androidx.preference:preference-ktx", version = "1.2.0" } diff --git a/pluto/lib/build.gradle b/pluto/lib/build.gradle index 93e745338..43838493c 100644 --- a/pluto/lib/build.gradle +++ b/pluto/lib/build.gradle @@ -61,6 +61,8 @@ dependencies { implementation(libs.androidx.core) implementation(libs.androidx.appcompat) + implementation libs.androidx.lifecycle.runtime + implementation libs.androidx.lifecycle.process implementation(libs.retrofit) implementation(libs.retrofit.converter.moshi) diff --git a/pluto/lib/src/main/java/com/pluto/Pluto.kt b/pluto/lib/src/main/java/com/pluto/Pluto.kt index 06a43ef72..22a100224 100644 --- a/pluto/lib/src/main/java/com/pluto/Pluto.kt +++ b/pluto/lib/src/main/java/com/pluto/Pluto.kt @@ -3,6 +3,7 @@ package com.pluto import android.app.Application import android.content.Intent import android.os.Bundle +import androidx.lifecycle.ProcessLifecycleOwner import com.pluto.core.Session import com.pluto.core.applifecycle.AppLifecycle import com.pluto.core.applifecycle.AppStateCallback @@ -44,7 +45,7 @@ object Pluto { initialiseCallbacks() this.application = application appLifecycle = AppLifecycle(appStateCallback) - application.registerActivityLifecycleCallbacks(appLifecycle) + ProcessLifecycleOwner.get().lifecycle.addObserver(appLifecycle) pluginManager = PluginManager(application).apply { install(plugins) } diff --git a/pluto/lib/src/main/java/com/pluto/core/applifecycle/AppLifecycle.kt b/pluto/lib/src/main/java/com/pluto/core/applifecycle/AppLifecycle.kt index a0c4400b5..f94f7ea69 100644 --- a/pluto/lib/src/main/java/com/pluto/core/applifecycle/AppLifecycle.kt +++ b/pluto/lib/src/main/java/com/pluto/core/applifecycle/AppLifecycle.kt @@ -1,30 +1,17 @@ package com.pluto.core.applifecycle -import android.app.Activity -import android.app.Application.ActivityLifecycleCallbacks -import android.os.Bundle +import androidx.lifecycle.DefaultLifecycleObserver +import androidx.lifecycle.LifecycleOwner -internal class AppLifecycle(private val appStateCallback: AppStateCallback) : ActivityLifecycleCallbacks { +internal class AppLifecycle(private val appStateCallback: AppStateCallback) : DefaultLifecycleObserver { - private var activityCount = 0 - - override fun onActivityStarted(activity: Activity) { - activityCount++ - if (activityCount == 1) { - appStateCallback.state.postValue(AppStateCallback.State.Foreground) - } + override fun onStart(owner: LifecycleOwner) { + super.onStart(owner) + appStateCallback.state.postValue(AppStateCallback.State.Foreground) } - override fun onActivityStopped(activity: Activity) { - activityCount-- - if (activityCount == 0) { - appStateCallback.state.postValue(AppStateCallback.State.Background) - } + override fun onStop(owner: LifecycleOwner) { + super.onStop(owner) + appStateCallback.state.postValue(AppStateCallback.State.Background) } - - override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {} - override fun onActivityResumed(activity: Activity) {} - override fun onActivityPaused(activity: Activity) {} - override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} - override fun onActivityDestroyed(activity: Activity) {} }