2017-02-19 67 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);