前一篇我们介绍了RxLifecycle解决Rxjava可能发生的内存泄漏问题:解决RxJava内存泄漏——Rxlifecycle使用
AutoDispose是一个RxJava2工具,也用于解决Rxjava内存泄漏问题。Auto Dispose GitHub地址
基本使用
导入依赖:
1 | implementation 'com.uber.autodispose:autodispose-android-archcomponents:1.3.0' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Observable.interval(1,TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) //加入这行代码 .as(AutoDispose.autoDisposable(AndroidLifecycleScopeProvider.from(this))) .subscribe(new Observer<Long>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Long aLong) { Log.d("123", "onNext: "); } @Override public void onError(Throwable e) { } @Override public void onComplete() { Log.d("123", "onComplete: "); } }); |
可以看到只需要加入一行代码即可,比RxLifecycle更为简便。
注:
集成AutoDispose后如出现如下错误:
1 | Error: Invoke-customs are only supported starting with Android O (--min-api 26) |
解决方法:
app 的 build.gradle中android下加入如下配置:
1 2 3 4 5 6 | android{ compileOptions{ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } |