android - 无法在带有 Kotlin 的 Android 中使用 Autodispose
问题描述
我试图使用 AutoDispose https://github.com/uber/AutoDispose在 android 中处理我的 Rx 流。
但是当我将它添加到我的活动/片段时遇到问题。我认为这是一个 kotlin 问题,但我无法弄清楚是什么。
当我添加时AndroidLifecycleScopeProvider.from(lifecycle)
,Android Studio 中的 from 方法出现错误,并且无法编译。
这是堆栈跟踪
None of the following functions can be called with the arguments supplied:
public final fun from(p0: (() -> Lifecycle)!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: Lifecycle!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: LifecycleOwner!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
相同的代码适用于那里的示例应用程序。
解决方案
我遇到了同样的问题,这是由于 Lifecycle 包 Androidx 支持和以前的 v7 支持的兼容性,它们在包工件命名方面有所不同。
com.android.support:appcompat-v7 -> androidx.appcompat:appcompat:1.0.0
AppCompatActivity 实现了 LifecycleOwner,这是 AutoDispose 工作的动力,但在最新版本的 AutoDispose 中,他们使用 AndroidX 代替(参见 AndroidLifecycleScopeProvider.from(LifecycleOwner owner) 'LifecycleOwner' ),因此如果您使用非 Androidx,则所有者不能被视为正确类型使用 AutoDispose v1.1.0(AFAIK AutoDispose v0.8.0 适用于 com.android.support:appcompat-v7:28.0.0)</p>
因此,您可以使用将您的应用迁移到 AndroidX迁移指南或使用旧版本的 AutoDispose。请参阅mvnrepository 上的 AutoDispose。
关于更改,请参阅更改日志https://github.com/uber/AutoDispose/blob/master/CHANGELOG.md#version-100,v1.0.0 及更高版本依赖于AndroidX,v1.0.0-RC3 应该是我们的选择.
版本 1.0.0 2018-10-10 稳定发布!这在功能上与 1.0.0-RC3 相同,但完全迁移到了新的 AndroidX 工件。从现在开始,对于 Android 项目,您必须使用 AndroidX 工件。如果需要,您可以使用 1.0.0-RC3 来简化迁移。
编辑:如果您想要 RxKotlin 之类的扩展,请复制:https ://github.com/uber/AutoDispose/blob/master/sample/src/main/kotlin/com/uber/autodispose/recipes/subscriberproxies.kt
推荐阅读
- arduino - 如何使服务器能够使用 arduino for ESP32 WebServer 自动下载文件,而不使用 SPIFFS 而是使用 SDcard 文件
- matrix - 使用 SSE 在列主要顺序和行主要顺序之间转置的最佳方法
- swift - 对 SwiftUI 中的 @EnvironmentObject 感到困惑
- python - 如何真正快速地打印输出并修复重复打印模式,这也是输出的划分问题?
- git - 如何查看在 git 中操作的所有项目文件及其历史记录
- node.js - 每次在 NodeJs 中命中 api 端点时发送一个服务器发送事件(SSE)
- google-apps-script - for循环不返回数据
- jquery - 模态在控制器中获取正确的路径但未显示
- r - 从存储在列表中的数据帧中绘制多个图
- swift - 从 Firebase 数据库 Swift 中检索嵌套数据