Комментарии 5
Использование AsyncTask’ ов было неудобным потому что:
1) Чтобы получить превью какого-нибудь места, необходимо было сначала сделать запрос для получения информации о всех местах, которые находились рядом с выбранным пользователем местом.
2) По полученным Id сформировать и отправить запрос о получении фотографии-превью.
3) При клике на превью получить все картинки относящиеся к этому месту.
Таким образом, при использовании AsyncTask’ов получался некий «водопад» и пришлось бы использовать один AsyncTask внутри другого. И тогда, погуглив, я нашел информацию о паттерне Command Processor, который отлично справляется с задачами, описанными выше.
Вам прямая дорога к RxJava, серьезно :) Это проще, чем паттерн Commander, отлично параллелится, комбинируется, пишется и читается.
+2
Спасибо за совет, да, наслышан о нем. Но хотелось избежать black-boxy вещей и сделать все вручную.Теперь с RxJava начну экспериментировать.
0
Кажется, какой-то EventBus все очень бы упростил.
0
Не очень удачная реализация. Никак не обрабатывается поворот экрана, на activity хранится жесткая ссылка, которую не заменить, значит при её пересоздании мы не сможем даже результат вернуть. Как верно было замечено с EventBus всё бы было проще.
0
Да, использование EventBus в данном примере было бы проще. А что если у вас много реквестов и они могут быть взаимосвязаны? К примеру запрос на получение Id и следующий за ним запрос на картинку по этому Id? В данном случае использование только EventBus приведет к большому количеству событий (и не только с обработкой в Activity, но и в классах-реквестах), и возможно будет полезным использовать EventBus только для обновления UI а управлять запросами можно через handler, то есть MessageController в данном примере. Ну или как сказали выше использовать RxJava
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Шаблоны проектирования мобильных приложений. Command Processor