gpt4 book ai didi

Android DataStore : Calling Context. createDataStore from Java

转载 作者:行者123 更新时间:2023-12-03 20:02:35 39 4
gpt4 key购买 nike

我正在尝试用 Java 实现新的类型化 DataStore API,但遇到了一些问题。所有文档似乎都只在 Kotlin 中,并且尝试创建新的数据存储并不像 Java 方面那样直接。
调用DataStoreFactoryKt.createDataStore() Java 要求我提供所有参数,包括 Kotlin 实现中具有默认值的参数。好像没有@JvmOverloads该功能的注释,导致我的困境。

fun <T> Context.createDataStore(
fileName: String,
serializer: Serializer<T>,
corruptionHandler: ReplaceFileCorruptionHandler<T>? = null,
migrations: List<DataMigration<T>> = listOf(),
scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
): DataStore<T> =
DataStoreFactory.create(
produceFile = { File(this.filesDir, "datastore/$fileName") },
serializer = serializer,
corruptionHandler = corruptionHandler,
migrations = migrations,
scope = scope
)
如果有的话,有什么更好的方法来解决这个问题?或者 Data Store api 是否简单设计为仅与 Kotlin 一起使用?我不知道如何提供 CoroutineScope来自 Java 的论点。

最佳答案

在将 dataStore 依赖项更新为“1.0.0-alpha08”后,如下所示。

// DataStore
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha08"
您可以有如下偏好实现:
private val Context.dataStore by preferencesDataStore("app_preferences")
之后,如果您喜欢创建一些首选项键:
private object Keys {
val HIDE_VISITED = booleanPreferencesKey("hide_visited")
}
其他选项可以是 字符串 首选项键, 整数 PreferencesKey 等
保存值示例:
context.dataStore.edit { prefs -> prefs[Keys.HIDE_VISITED] = hideVisited }
读取保存值示例:
val hideVisited = preferences[Keys.HIDE_VISITED] ?: false

关于Android DataStore : Calling Context. createDataStore from Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64913836/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com