复合一次性使处理(认为提前取消更容易).假设您有一个活动同时发生多个api调用:
var disposable = api.call1(arg1, arg2).subscribe(...)
var disposable2 = api.call2(arg1).subscribe(...)
var disposable3 = api.call3().subscribe()
如果您需要提前处置(例如,用户导航远离活动),那么您需要这样做:
disposable.dispose()
disposable2.dispose()
disposable3.dispose()
如果您改为使用CompositeDisposable,则可以将所有一次性物品存储在其中.像这样:
val composite = CompositeDisposable()
composite.add(api.call1(arg1, arg2).subscribe(...))
composite.add(api.call2(arg1).subscribe(...))
composite.add(api.call3().subscribe())
然后你可以拨打一个处理电话:
composite.dispose()
如果您使用的是kotlin,您可以使用运算符重载来使其看起来更好:
fun CompositeDisposable.plusAssign(disposable: Disposable){
this.add(disposable)
}
这使您能够表达为:
val composite = CompositeDisposable()
composite += api.call1(arg1, arg2).subscribe(...)
composite += api.call2(arg1).subscribe(...)
composite += api.call3().subscribe()
Disposable表示请求(认为正在完成工作)并且有一个名为dispose的方法来处理请求.