Отписаться от наблюдаемой Rxjava - PullRequest
0 голосов
/ 15 октября 2018

Я совершенно новичок в Rx Java-наблюдаемых, поэтому я не уверен, когда отписаться.Вот как моя реализация кода

Observable<String> sampleObservable = Observable.just(accountNum);
        Subscription sampleSub = sampleObservable.subscribeOn(Schedulers.io()).subscribe(new Action1<String>() {
            @Override
            public void call(String accountNum) {

                try {
                    //call backend api
                    AccountResponse response = getAccountDetails(accountNum);
                    logger.debug("Account response :" + response.toString());

                } catch (Exception e) {
                    logger.error(e.getMessage());

                }

            }

        });

Могу ли я отписаться в конце "sampleSub.unsubscribe ()".Я обеспокоен тем, что вызову «getAccountDetails (accountNum)» потребуется время для завершения, а код отменит подписку, и отменит ли он / повлияет ли вызов «getAccountDetails (accountNum)»?Если да, то есть ли способ отписаться только после завершения этого звонка?

Observable<String> sampleObservable = Observable.just(accountNum);
    Subscription sampleSub = sampleObservable.subscribeOn(Schedulers.io()).subscribe(new Action1<String>() {
        @Override
        public void call(String accountNum) {

            try {
                //call backend api
                AccountResponse response = getAccountDetails(accountNum);
                logger.debug("Account response :" + response.toString());

            } catch (Exception e) {
                logger.error(e.getMessage());

            }

        }

    });

   //unsubscribing
    sampleSub.unsubscribe();

Ответы [ 2 ]

0 голосов
/ 30 января 2019

вы можете распоряжаться. В цепочке Rx api вы получите удовольствие под названием doOnSubscribe (одноразовое), сохраните это одноразовое и вызовите одноразовое.dispose (), которое очистит подписку

или

каждый разесли вы подписаны на поток, вы получите Disposable в качестве возврата, используйте его и утилизируйте.

(в любом случае вы можете это сделать)

0 голосов
/ 17 октября 2018

Как документация сказал

unsubscribe () Останавливает получение уведомлений на подписчике, который был зарегистрирован при получении этой подписки.

Это означает, что вы можете вызвать этот метод, если вам больше не нужны данные.Вы можете прекратить получать данные до окончания периода.Например, вы можете наблюдать данные с сервера, когда находитесь на экране, но когда вы закрываете экран, вы можете отписаться от этого источника.

...