Читая тему № 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()
выбросы, а когда нет необходимости?