2015-08-13 2 views
1

Я буду заменять все мои коды AsyncTasks на RxJava Observable. В настоящее время все задачи находятся за пределами фрагмента. Нужно ли отказаться от подписки? Где и когда?RxJava Наблюдаемая внешняя активность или фрагмент

Большое спасибо ..

+0

Укажите, как вы будете использовать свое наблюдение. Вам абсолютно необходимо отказаться от подписки, если ваш абонент будет зависеть от жизненного цикла активности/фрагмента и удерживать ссылки на активность/фрагмент/просмотр. – MyDogTom

+0

У меня есть отдельный класс с CRUD (create, retrieve ..) с AsyncTask каждый метод. Внутри OnPostExecute у меня есть слушатель, чтобы передать данные запроса фрагменту. Где я могу отказаться от подписки, так как я просто заменил AsyncTask на Observable внутри моего отдельного класса? – Marvs

ответ

0

Я полагаю, у вас есть открытый метод, который позволяет получить доступ к Observable. После вас subscribe() вы получите объект Subscription.

Вы можете расположить подписку всякий раз, когда вам нравится, например:

  • В Activity.onDestroy(), если вы хотите привязать его к Activity жизненного цикла
  • Вы можете привязать его к OnClickListener, если вы хотите чтобы пользователь мог прервать сетевой запрос.

Эти два примера являются лишь двумя примерами. Если вы хотите больше ориентироваться на жизненный цикл деятельности, взгляните на RxLifecycle.

+0

Спасибо за ваш ответ. Скажем, если у меня есть отдельный класс, чтобы подписаться и получить данные из onCompleted, я просто передам строковое значение фрагменту. Где я могу отказаться от подписки, так как подписка (Observable) находится за пределами фрагмента? – Marvs

+0

В момент, когда вы достигнете 'onCompleted()' 'Subscription', удаляется. Когда вы получаете новые данные в 'onNext (T)', как вы передаете его фрагменту? Если вы работаете с «Субъектом» и с текущей подпиской, вы можете привязать жизненный цикл «Фрагмент» к некоторому методу вашего отдельного класса, который распоряжается всеми активными подписками. –

Смежные вопросы