AutoDispose解决RxJava内存泄漏

依赖项:android

//AutoDispose解决RxJava内存泄漏
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'com.uber.autodispose:autodispose:1.1.0'
implementation 'com.uber.autodispose:autodispose-android:1.1.0'
implementation 'com.uber.autodispose:autodispose-android-archcomponents:1.1.0'
implementation 'com.uber.autodispose:autodispose-android-archcomponents-test:1.1.0'

代码样例:app

Observable.interval(1, TimeUnit.SECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                //AutoDispose RxJava内存泄漏处理
                //.as(AutoDispose.<Long>autoDisposable(AndroidLifecycleScopeProvider.from(SecondActivity.this, Event.ON_DESTROY)))
                .subscribe(new Observer<Long>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                    }

                    @Override
                    public void onNext(Long aLong) {
                    }

                    @Override
                    public void onError(Throwable e) {
                    }

                    @Override
                    public void onComplete() {
                    }
                });

使用AndroidStudio中的profile进行内存分析查看:![](https://s4.51cto.com/images/blog/201812/21/34d6c1bfe8d1349c3c5bc1e494fd2cbd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

点击这个图标启动app,选择你的手机,对应包名,双击MEMORY视图
查看使用AutoDispose于不使用的区别看对应类内存是否回收了
![](https://s4.51cto.com/images/blog/201812/21/e351f2ccce71828b2e6f9296dc7bfbaa.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

注意点:

项目依赖的是下面这两个,不然直接使用support-v7中的AppCompatActivity调用接口时类型匹配不上
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
```ide