我试着在onComplete()块上调用它,但是compositeDisposables.clear()通过修改网络调用会导致调用中途取消。
observable.......
.subscribe(
{
utilModule.logI("net repo response")
//cleanDisposables()//this causes HttpOk cancelled error
},
{
utilModule.logI("no repo response" + it.message)
//cleanDisposables()
}
))
}
private fun cleanDisposables() {
//clean old network observables, dispose will prevent further observing
utilModule.logI("disposing observables")
if (!compositeDisposables.isDisposed) {
compositeDisposables.clear()
}
}发布于 2018-06-12 19:40:15
通常情况下,您的可处置物品将绑定到您的活动或碎片生命周期,并在onDestroy中清除。
这可能是一个使用MVP设计模式的例子..。
presenter.kt
fun dispose() {
compositeDisposable.clear()
}
activity.kt
override fun onDestroy() {
super.onDestroy()
presenter.dispose()
}发布于 2018-06-15 09:10:44
下面是我如何在MVVM中这样做的。我有生命周期编辑的活动,这是我的ViewModel。然后,在ViewModel类中,我有CompositeDisposable实例。我在ViewModel onCleared方法中这样做。
这是一个存根
public class MyViewModel extends AndroidViewModel {
private MyRepo mRepo;
private CompositeDisposable mDisposables = new CompositeDisposable();
public MyViewModel(@NonNull Application application) {
super(application);
mRepo = MysRepo.getInstance(...);
}
public void loadData()
{
Disposable d = mRepo.getMyPeculiarData()
...
.subscribe(...);
mDisposables.add(d);
}
@Override
protected void onCleared() {
super.onCleared();
mDisposables.clear();
}
}https://stackoverflow.com/questions/50824023
复制相似问题