Делаю запрос в интернет (из активити или фрагмента), получаю ответ, показываю во въюхе. В крэш-репортах сыпется, что кто-то при этом поворачивает экран, кто-то уходит в слип, и прочее - в общем, обработчик ответа пытается отрендерить ответ на несуществующей активити и падает.
Соответственно, вопрос: как вообще всё это правильно делать?
Получается, что нужно отделить обработчик запроса от активити/фрагмента. Но тут возникает масса вопросов. Например, как новая активити (после поворота) должна определять, что ранее запрос уже был отослан и сейчас выполняется? Или, например, запрос выполнен, но активити в этот момент пересоздаётся - получается, куда-то нужно сохранить ответ, пока активити его не запросит?
Как всё это правильно организовать? Может, какие готовые библиотеки есть? Или статья какая хорошая?
GavriKos: Нет, точно не из интерфейсного потока. Я юзаю либу loopj.com/android-async-http но это не важно. Тут интересен сам принцип как правильно организовать, например, случай, когда ответ приходит (и соответсвенно обработчик запускается для рендера результата) в момент кода активити пересоздается (то есть ее фактически нет). Ведь логически, при таком случае мы должны сохранить результат куда-то, а активити должна спросить был ли такой запрос. Если нет - сделать его, если да - использовать результать. Так же активити должна спросить а не выполняется ли этот запрос прямо сейчас. Если выполняется - подписаться на событие о его выполнении, если нет - опять таки сделать запрос.
Вот как-то так мне все это представляется, имхо должно быть что то готовое.
Про варианты обработки изменений конфигурации можете почитать тут.
Так же советую почитать про архитектурные паттерны построения приложений, например MVP.
Как решение в лоб - можно использовать объект синглтон, который занимается выполнением сетевых операций и хранением их результатов, а в методах жизненного цикла вашей активити или фрагмента подписываться на эти данные, либо отписываться от них. Например, в onCreate() подписаться на данные, а в onDestroy() или onPause() - отписаться.
Алексей, спасибо за помощь с моим вопросом по DataBinding. К Вашему ответу: не является ли на сей день более актуальным подход MVVM с применением DataBinding, в свете сетевых запросов?