mitaichik
@mitaichik

Как правильно обрабатывать ответ из интернета?

Всем привет! В андройде новичек, подскажите как правильно:

Делаю запрос в интернет (из активити или фрагмента), получаю ответ, показываю во въюхе. В крэш-репортах сыпится что кто-то при этом поворачивает экран, кто-то уходит в слип, и прочее - в общем, обработчик ответа пытается отрендерить ответ на несуществующей активити и падает.

Соответственно, вопрос: как вообще все это правильно делать?

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

Как все это правильно организовать? Мож какие готовые библиотеки есть? Или статья какая хорошая? А то я что-то совсем не въезжаю.

Заранее спасибо!
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 3
Lucky_spirit
@Lucky_spirit
Android developer
Воспользуйтесь RoboSpice или напишите свой собственный AsyncTaskLoader, опираясь на эту статью от Ian Lake. Я бы написал свой Loader.
Ответ написан
@AlexeyVD
Про варианты обработки изменений конфигурации можете почитать тут.
Так же советую почитать про архитектурные паттерны построения приложений, например MVP.
Как решение в лоб - можно использовать объект синглтон, который занимается выполнением сетевых операций и хранением их результатов, а в методах жизненного цикла вашей активити или фрагмента подписываться на эти данные, либо отписываться от них. Например, в onCreate() подписаться на данные, а в onDestroy() или onPause() - отписаться.
Ответ написан
@peacemakerv
Разработка под Android
Делать обмен с сетью в фоновом сервисе, по результату - обновлять текущее активити.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы