Я буду заменять все мои коды AsyncTasks на RxJava Observable. В настоящее время все задачи находятся за пределами фрагмента. Нужно ли отказаться от подписки? Где и когда?RxJava Наблюдаемая внешняя активность или фрагмент
Большое спасибо ..
Я буду заменять все мои коды AsyncTasks на RxJava Observable. В настоящее время все задачи находятся за пределами фрагмента. Нужно ли отказаться от подписки? Где и когда?RxJava Наблюдаемая внешняя активность или фрагмент
Большое спасибо ..
Я полагаю, у вас есть открытый метод, который позволяет получить доступ к Observable
. После вас subscribe()
вы получите объект Subscription
.
Вы можете расположить подписку всякий раз, когда вам нравится, например:
Activity.onDestroy()
, если вы хотите привязать его к Activity
жизненного циклаOnClickListener
, если вы хотите чтобы пользователь мог прервать сетевой запрос.Эти два примера являются лишь двумя примерами. Если вы хотите больше ориентироваться на жизненный цикл деятельности, взгляните на RxLifecycle.
Спасибо за ваш ответ. Скажем, если у меня есть отдельный класс, чтобы подписаться и получить данные из onCompleted, я просто передам строковое значение фрагменту. Где я могу отказаться от подписки, так как подписка (Observable) находится за пределами фрагмента? – Marvs
В момент, когда вы достигнете 'onCompleted()' 'Subscription', удаляется. Когда вы получаете новые данные в 'onNext (T)', как вы передаете его фрагменту? Если вы работаете с «Субъектом» и с текущей подпиской, вы можете привязать жизненный цикл «Фрагмент» к некоторому методу вашего отдельного класса, который распоряжается всеми активными подписками. –
Укажите, как вы будете использовать свое наблюдение. Вам абсолютно необходимо отказаться от подписки, если ваш абонент будет зависеть от жизненного цикла активности/фрагмента и удерживать ссылки на активность/фрагмент/просмотр. – MyDogTom
У меня есть отдельный класс с CRUD (create, retrieve ..) с AsyncTask каждый метод. Внутри OnPostExecute у меня есть слушатель, чтобы передать данные запроса фрагменту. Где я могу отказаться от подписки, так как я просто заменил AsyncTask на Observable внутри моего отдельного класса? – Marvs