diff options
| author | 2024-12-03 04:12:57 +0000 | |
|---|---|---|
| committer | 2024-12-03 04:12:57 +0000 | |
| commit | 579743356dc3ce6ae9cbd3edb021e2f78efdf04c (patch) | |
| tree | b60316c0c53a97c13e26f8c25ecd0b3f2ae495c7 | |
| parent | 471e6c9e931fbde92eed8274643b1e2198aba388 (diff) | |
| parent | 70e5bd7956e6a14c5253c7ba45cad07e2850207f (diff) | |
Merge "[Catalyst] Provide lifecycleScope for PreferenceLifecycleContext" into main
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? |