我正在尝试使用AutoDispose https://github.com/uber/AutoDispose在android中处理我的Rx流。

但是,当我将其添加到 Activity /片段中时遇到问题。我认为这是 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支持的兼容性引起的,它们在软件包 Artifact 中有所不同
命名。

AndroidX
Mirgration
例如: Artifact 命名:



AppCompatActivity实现了LifecycleOwner,这是AutoDispose的职责所在,但是在最新版本的AutoDispose中,它们改用AndroidX(请参阅AndroidLifecycleScopeProvider.from(LifecycleOwner owner)'LifecycleOwner'),因此,如果您使用Non-Androidx,则不能将所有者视为正确的类型与AutoDispose v1.1.0(AFAIK AutoDispose v0.8.0与com.android.support:appcompat-v7:28.0.0一起很好地工作)

因此,您可以使用将应用程序迁移到AndroidX Mirgration Guide或使用旧版本的AutoDispose。参见AutoDispose on mvnrepository

关于更改,请参阅changelog https://github.com/uber/AutoDispose/blob/master/CHANGELOG.md#version-100,v1.0.0和更高版本取决于AndroidX,v1.0.0-RC3应该是我们的选择。



编辑:如果您想要RxKotlin像扩展名,请复制:https://github.com/uber/AutoDispose/blob/master/sample/src/main/kotlin/com/uber/autodispose/recipes/subscriberproxies.kt

10-07 23:04