如何在 2024 年末保留我的应用设置?

问题描述 投票:0回答:1

我正在尝试使用 Kotlin 在 Android Studio 中创建我的第一个 Android 应用程序。在学习如何使用 Jetpack Compose 的同时成功创建了几个活动后,我现在要添加一个设置屏幕,用户可以在其中切换几个选项。

我想保留这些设置,以便在应用程序关闭并重新启动后恢复它们。

根据 2024 年底已弃用或未弃用且稳定的内容,保留应用程序设置的默认方式是什么?

android kotlin
1个回答
0
投票
你的第二个选择是要走的路。您错误地使用了

PreferencesDataStore

,但文档只讨论了 preferencesDataStore
(注意第一个字符的小写)。这不是一个类型,它是一个返回 DataStore 的函数。

示例数据存储实现可能如下所示:

private val Context.dataStore by preferencesDataStore("settings") private val Keys = object { val EXAMPLE_SETTING_1 = intPreferencesKey("example_counter") } @Singleton class SettingsDataStoreManager @Inject constructor( @ApplicationContext context: Context, ) { private val dataStore = context.dataStore val exampleSetting1: Flow<Int> = dataStore.data .map { preferences -> preferences[Keys.EXAMPLE_SETTING_1] ?: 0 } suspend fun setExampleSetting1(value: Int) { dataStore.edit { settings -> settings[Keys.EXAMPLE_SETTING_1] = value } } }
这表示可以包含任意数量设置的单个数据存储(当前仅包含单个设置,

exampleSetting1

)。将所有这些内容放入专用的 Kotlin 文件中。

如果您想为同一应用程序创建另一个数据存储,请创建一个新文件。使用另一个类名和另一个参数

preferencesDataStore


下一步是检索视图模型中的

exampleSetting1

 流,并将其作为 StateFlow(通过使用 
stateIn
)公开给可组合项,在可组合项中通过调用 
collectAsStateWithLifecycle
 将其转换为 Compose State 对象。当数据存储中的值发生更改时,该状态将自动更新(然后触发重组)。因此,您的 UI 将始终自动更新。

© www.soinside.com 2019 - 2024. All rights reserved.