繁体   English   中英

在 Android 项目中使用 StateFlow

[英]Using StateFlow in an Android Project

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

我添加了

实施“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:解析失败:Lkotlinx/coroutines/flow/StateFlowKt; .... 引起:java.lang.ClassNotFoundException:没有找到 class “kotlinx.coroutines.flow.StateFlowKt” 在路径:DexPathList[[zip file "/data/app/com.xxgHzxxx.consumer-XLU46ra /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的库模块显然不是通过工件存储库分发的。 结果,使用该模块的应用程序模块没有获得传递依赖数据,因此它无法知道您的库模块需要特定版本的协程。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM