我使用Observable.create()创建一个observable来对调度程序执行一些工作(例如Schedulers.io(),然后在
AndroidSchedulers.mainThread()上返回一个结果.
val subscription = observable {
try {
// perform action synchronously
it.onNext(action.invoke(context, args))
it.onCompleted()
} catch (t: Exception) {
it.onError(t)
}
}.subscribeOn(scheduler)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
// handle result here
result.set(it)
},
{
// handle error here
errorHandler.handleTaskError(model, this, it)
},
{
// notify completed
model.completeTask(this)
}
)
action.invoke()内部的操作是同步的,可能是阻塞IO操作.当用户决定取消它时,我取消订阅observable:subscription.unsubscribe()
但是,I / O操作不会被中断.是否有任何rx-java API来中断操作?