Я все еще разбираюсь в RxJava и использую его, чтобы сделать некоторые сетевые вещи с помощью Retrofit 2. Пробовал это в течение пары дней, и вот этот код выглядит более читаемым, но натолкнулся на проблему, рисуйте путь вокруг.
Я пытаюсь выполнить логин (который возвращает токен API), а затем использовать этот токен для извлечения некоторых исходных данных в одной и той же цепочке, так что вывод цепочки - это токены + данные. Для этого я вызываю службу API с помощью
apiClient
.login()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(token -> getData(token))
.subscribe(new Subscrber<Bundle>() {...});
Это казалось прекрасным, но я также хотел показать индикатор выполнения при запуске и остановке цепочки. Поэтому я добавил в это .doOnSubscribe()
и .doOnUnsubscribe()
. Однако я заметил, что после изменения ориентации фрагмент, который я пытался скрыть индикатор выполнения, всегда равен нулю.
Итак, я обыскал и наткнулся на RxLifecycle lib, который, казалось, помог, и теперь я .cache()
и отпишусь от события цепь. Но я не могу понять, как подписаться на одно и то же событие снова в onCreate()
после этого? Я думаю, что я пропустил что-то довольно простое и буду признателен за любую помощь в этом.