无法在Android中使用与Kotlin的Autodispose

问题描述 投票:2回答:1

我试图使用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

相同的代码适用于示例应用程序。

android kotlin rx-java2 rx-android autodispose
1个回答
1
投票

我遇到了同样的问题,它引起了Lifecycle包兼容Androidx支持和以前的v7支持,它们在包工件命名方面有所不同。

AndroidX Mirgration 例如:工件命名:

com.android.support:appcompat-v7 - > androidx.appcompat:appcompat:1.0.0

AppCompatActivity实现了LifecycleOwner,这是AutoDispose工作的强大功能,但在最新版AutoDispose中,他们使用AndroidX(参见AndroidLifecycleScopeProvider.from(LifecycleOwner所有者)'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

关于更改,请参阅更改日志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

© www.soinside.com 2019 - 2024. All rights reserved.