summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-12-03 04:12:57 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-03 04:12:57 +0000
commit579743356dc3ce6ae9cbd3edb021e2f78efdf04c (patch)
treeb60316c0c53a97c13e26f8c25ecd0b3f2ae495c7
parent471e6c9e931fbde92eed8274643b1e2198aba388 (diff)
parent70e5bd7956e6a14c5253c7ba45cad07e2850207f (diff)
Merge "[Catalyst] Provide lifecycleScope for PreferenceLifecycleContext" into main
-rw-r--r--packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceStateProviders.kt9
-rw-r--r--packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt5
2 files changed, 14 insertions, 0 deletions
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceStateProviders.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceStateProviders.kt
index 7436ac1f9712..6704ecc93891 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceStateProviders.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceStateProviders.kt
@@ -20,6 +20,8 @@ import android.content.Context
import android.content.ContextWrapper
import android.content.Intent
import android.os.Bundle
+import androidx.lifecycle.LifecycleCoroutineScope
+import kotlinx.coroutines.CoroutineScope
/**
* Interface to provide dynamic preference title.
@@ -138,6 +140,13 @@ interface PreferenceLifecycleProvider {
*/
abstract class PreferenceLifecycleContext(context: Context) : ContextWrapper(context) {
+ /**
+ * [CoroutineScope] tied to the lifecycle, which is cancelled when the lifecycle is destroyed.
+ *
+ * @see [androidx.lifecycle.lifecycleScope]
+ */
+ abstract val lifecycleScope: LifecycleCoroutineScope
+
/** Returns the preference widget object associated with given key. */
abstract fun <T> findPreference(key: String): T?
diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
index 03b225efc3cc..6fc9357e9332 100644
--- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
+++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt
@@ -19,6 +19,8 @@ package com.android.settingslib.preference
import android.content.Context
import android.content.Intent
import android.os.Bundle
+import androidx.lifecycle.LifecycleCoroutineScope
+import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
import androidx.preference.PreferenceDataStore
import androidx.preference.PreferenceGroup
@@ -57,6 +59,9 @@ class PreferenceScreenBindingHelper(
private val preferenceLifecycleContext =
object : PreferenceLifecycleContext(context) {
+ override val lifecycleScope: LifecycleCoroutineScope
+ get() = fragment.lifecycleScope
+
override fun <T> findPreference(key: String) =
preferenceScreen.findPreference(key) as T?