我对RxJava和LeakCanary还不熟悉,所以这可能很简单(希望如此)。
CompositeDisposable
. 我得到了我的单例存储库的实例,并使用它来获得一个
Completable
复合可分解
.
复合可分解
不幸的是,在安装LeakCanary后,它报告此活动在存储库中通过
可完成的
.
我做错了什么?在谷歌上搜索时,我看不到人们在做什么额外的事情。
笔记
通常,我通过一个
AndroidViewModel
然而,在本例中,我使用的是我的设置活动,它需要对存储库进行一次调用。它不需要ViewModel。
无论如何,因为这个漏洞,金丝雀能够注意到活动被泄露了。如果我在默认情况下没有弄错的话,它将无法在我的ViewModels上执行此操作,除非我告诉它。
按要求编码(
已更新
private CompositeDisposable mSubscriptions;
@Override
public void onCreate(Bundle savedInstanceState) {
...
mSubscriptions = new CompositeDisposable();
...
}
@Override
protected void onPause() {
super.onPause();
mSubscriptions.clear();
}
public void someMethodForButtonClick(View view) {
IwcRepository iwcRepository =
Injection.provideIwcRepository(getApplication());
mSubscriptions.add(iwcRepository.getSomeCompletable()
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableCompletableObserver() {
@Override
public void onComplete() {
}
@Override
public void onError(@NonNull Throwable e) {
}
}));
}
LeakCanary屏幕截图: