RxJava2 create () осторожно - PullRequest
       8

RxJava2 create () осторожно

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

Читая тему № 2 из этой статьи , становится ясно, что правильное использование create() может повлечь за собой несколько проблем, таких как:

  • Отмена регистрации обратных вызовов, когда наблюдаемыйотписан (отказ от этого может привести к утечкам памяти)

  • Пропускать события, используя onNext или onCompleted, только когда подписчик все еще подписан

  • Распространятьошибки в восходящем направлении с использованием onError

  • Обрабатывать противодавление

Но, видя примеры от разработчиков RxJava2, например этот , гдеcreate() используется без каких-либо дальнейших проверок или предупреждений, заставляет задуматься, насколько глубоки проблемы с create()?

Если я хочу Subject, который может выдвигать значение в любое время, точно так же, как вэта ссылка:

Subject<Integer> subject = BehaviorSubject.<Integer>create().toSerialized();

Observable<Integer> observable = subject.observeOn(AndroidSchedulers.mainThread());

observable.subscribe(System.out::println);

subject.onNext(1)

Можно ли использовать create() или это опасно?Как узнать, когда нам нужно защищать create() выбросы, а когда нет необходимости?

1 Ответ

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

Observable.create(OnSubscribe) - это не то же самое, что и BehaviorSubject.create().Последний всегда был безопасным, так как создавал окончательный вариант и предварительно реализованный BehaviorSubject, то есть горячий Observable.

Observable.create(OnSubscribe) использовался длянастроить холодную Observable с нуля и потребовать от разработчика правильной реализации всего наблюдаемого протокола.Он был подвержен ошибкам и в конце 1.x метод create(OnSubscribe) устарел.Пожалуйста, прочитайте его javadoc для получения более подробной информации.

В RxJava 2 оба типа create методы безопасны.

...