AutoDispose实现RxJava自动解绑时报错
项目中使用到RxJava,为避免可能因使用不当而出现内存泄漏的问题,使用了AutoDispose来优雅的实现RxJava自动解绑。AutoDispose是uber的一个开源库。//kotlinobservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())...
·
项目中使用到RxJava,为避免可能因使用不当而出现内存泄漏的问题,使用了AutoDispose来优雅的实现RxJava自动解绑。
AutoDispose是uber的一个开源库。
//kotlin
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
//使用AutoDispose优雅的实现RxJava自动解绑
.`as`(AutoDispose.autoDisposable
(AndroidLifecycleScopeProvider.from(context,Lifecycle.Event.ON_DESTROY)))//OnDestory时自动解绑
.subscribe(observer)
然而在使用过程中报了错:
e: F:\project\work\App_first\calendar\Calendar_Android\httplibrary\src\main\java\com\fleet\httplibrary\network\RetrofitUtil.kt: (53, 88): None of the following functions can be called with the arguments supplied:
public final fun from(p0: (() -> Lifecycle)!, p1: ((Lifecycle.Event) -> Lifecycle.Event!)!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public final fun from(p0: (() -> Lifecycle)!, p1: Lifecycle.Event!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public final fun from(p0: Lifecycle!, p1: ((Lifecycle.Event) -> Lifecycle.Event!)!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: Lifecycle!, p1: Lifecycle.Event!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: Lifecycle!, p1: CorrespondingEventsFunction<Lifecycle.Event!>!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: LifecycleOwner!, p1: Lifecycle.Event!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: LifecycleOwner!, p1: CorrespondingEventsFunction<Lifecycle.Event!>!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
:httplibrary:compileReleaseKotlin FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':httplibrary:compileReleaseKotlin'.
> Compilation error. See log for more details
查阅资料,发现
使用AutoDispose时,在0.8.0以后的版本需要先将项目迁移至AndroidX,否则会提示错误。
None of the following functions can be called with the arguments supplied:
而我使用的是:
com.uber.autodispose:autodispose-android-archcomponents:1.0.0-RC2
操作:改为0.8.0版本。
本以为解决了,结果编译不通过,,,what???,看来报错主要是在
:compileReleaseKotlin
又一番查找,终于找到问题的根本原因了,因为使用了Kotlin,所以添加的依赖就不对。正确的依赖是:
/*AutoDispose相关依赖*/
implementation 'com.uber.autodispose:autodispose-kotlin:0.8.0'
implementation 'com.uber.autodispose:autodispose-android-archcomponents-kotlin:0.8.0'
编译,通过!!!
所以一旦出现compileReleaseKotlin这种报错,就要看添加的依赖是否是Kotlin版本。
注意:如果不将项目迁移至AndroidX,请不要使用新版本!使用0.8.0这个版本即可。
更多推荐
已为社区贡献1条内容
所有评论(0)