繁体   English   中英

无法通过 Kotlin 在 Android 中使用 Autodispose

[英]Unable to use Autodispose in Android with Kotlin

我试图使用 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 支持的兼容性引起的,它们在包工件命名上不同。

安卓X
迁徙
例如:工件命名:

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)

因此,您可以使用将您的应用迁移到 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

暂无
暂无

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

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