2017-02-19 2 views
1

Как отменить асинхронный наблюдаемый поток при отписании? У меня следующая ситуация:Как отменить async Наблюдаемый поток при отмене подписки

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

После отписки на операцию уничтожения данных еще загрузки на другой поток, я хочу, чтобы отменить операцию загрузки. Как я могу это сделать ?

+0

Как бы вы отменили api.UploadData (data) '? – LordRaydenMK

+0

Unsubscription отправляет прерывание в поток, который запускает ваш 'fromCallable'. Может быть, 'uploadData' не отвечает на прерывания Thread? – 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); 
Смежные вопросы