2017-02-19 87 views
1

如何取消订阅时取消异步Observable线程? 我有以下情况:如何在取消订阅上取消异步Observable线程

Observable.fromCallable(() -> api.UploadData(data)) 
.subscribeOn(Schedulers.from(threadExecutor)) 
.observeOn(AndroidSchedulers.mainThread()) 
.subscribe(subscriber); 

上的活动取消后销毁数据仍在上传其他线程,我想取消上传操作。我怎样才能做到这一点 ?

+0

你将如何取消'api.UploadData(data)'? – LordRaydenMK

+0

解除订阅向运行'fromCallable'的线程发送中断。也许'uploadData'不响应线程中断? – akarnokd

+0

@akarnokd hmm'uploadData'方法具有标准的okhttp同步。发布请求,没有更多,也许这是'ThreadPoolExecutor'的问题? – unixhead

回答

0

您可以试试doOnUnsubscribe并达到您的要求。

Observable.fromCallable(() -> api.UploadData(data)) 
    .subscribeOn(Schedulers.from(threadExecutor)) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .doOnUnsubscribe(() -> api.StopUpload()) 
    .subscribe(subscriber);