gpt4 book ai didi

android - 在 Android 项目中使用 StateFlow

转载 作者:行者123 更新时间:2023-12-02 12:19:17 36 4
gpt4 key购买 nike

一定是一个非常简单的解决方案,但是......我在我的 android 项目中使用 StateFlow 来替换在服务中用作 Observables 的 LiveData。我使用 LiveData 作为 Room Database 的可观察对象,但有关线程的限制(必须注册观察者并在主线程上通知)让我切换到 Flow 类。一切都很好且合乎逻辑,并且为了保留有关状态的信息,然后我决定使用 StateFlow

我加了

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions.freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
}

在我的 gradle 文件和

@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)

在具有 StateFlow 成员类型的类之上。但是当我运行项目时我遇到了崩溃:

java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/flow/StateFlowKt; .... Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlinx.coroutines.flow.StateFlowKt" on path: DexPathList[[zip file "/data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/lib/arm64, /data/app/com.xxxxx.consumer-X46raHzqXUeRRH40JT1LUg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]] ....

使用 Kotlin 在 Android 项目中添加 StateFlow 需要哪些步骤?

谢谢!

最佳答案

您有多个模块,您使用 StateFlow 的库模块显然不是通过 Artifact 存储库分发的。因此,使用该模块的应用程序模块不会获取传递依赖数据,因此它无法知道您的库模块需要特定版本的协程。

恕我直言,理想情况下,您将使用 Artifact 存储库(例如,mavenLocal())并让库模块使用协程库的 api 依赖项。

如果您不想弄乱它,任何使用该库的模块也应该具有协程依赖性,具有匹配(或至少兼容)的版本。

关于android - 在 Android 项目中使用 StateFlow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62387327/

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