Здравствуйте уважаемые участники форума.
Зачастую задание на собеседовании junior android выглядят примерно так:
Есть REST сервис N. Задача выполнить к нему запрос, получить результат, отобразить на экране в виде list/gird и тп.
Есть несколько мыслей:
1. Использовать asynctask из урока http://startandroid.ru/ru/uroki/vse-uro ... krana.html кажется мне в корне не верным, т.к. если мы попытаемся обновить интерфейс активити в положении paused то получим Exception и вылет приложения, или потеряем данные если отключится от asynctask в событии onpause и подключится onresume. Вердикт - бред сумасшедшего:)
2. Использовать Loaders тут нет проблем c жизненным циклом активити, данные мы обязательно получим, но в большом проекте это будет 100+ лоадеров, доступ к данным из одного источника разметается по всему проекту. Вердикт - не обеспечивает общий интерфес доступа к данным одного семейства.
3. Использовать связку Activity > IntentService. Не уверен что смогу четко сформировать недостатки, но возникают вопрос гарантированно ли broadcast reciver объявленный в активити получит результат работы сервиса.
3. Реализовать один из паттернов https://docs.google.com/file/d/0B2dn_35 ... dSb3c/edit если сделать скидку на год лекции (2010) кажется лучшим вариантом, но честно говоря написать свою реализацию у меня не получилось.
Вопросы. Как правильно реализовать взаимодействие между activity и тем объектом который будет загружать данные? Какой реализации этой задачи ожидает работодатель?
Задания на собеседовании, REST API.
-
- Сообщения: 6
- Зарегистрирован: 27 июл 2015, 17:20
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Задания на собеседовании, REST API.
Может это поможет в понимании. Там есть ссылка на проект
http://habrahabr.ru/post/250659/
Посмотрните в сторону либы Robospice, именно её советовало большинство спикеров на концеренции droidcon. Под капотом у ней сервис.
http://habrahabr.ru/post/250659/
Что что, простите? Из какого источника доступ разметается? Лодеры надо использовать в одном месте ко всему проекту. Лодеры созданы для того, чтобы их можно быол переиспользовать (если ен брать в расчет что они еще решают проблемы асинкТасков), значит они по определению и должны разметаться по проектам. А то что они большие, то да , это так. (надеюсь вы каждый лодер пишете в отдельном классе)2. Использовать Loaders ... доступ к данным из одного источника разметается по всему проекту... .
Посмотрните в сторону либы Robospice, именно её советовало большинство спикеров на концеренции droidcon. Под капотом у ней сервис.
-
- Сообщения: 6
- Зарегистрирован: 27 июл 2015, 17:20
Re: Задания на собеседовании, REST API.
Я имел ввиду что будет 1 лоадер для получения профиля пользователя, 1 для получения списка новостей, 1 для поиска пользователей, и т.д при этом они ни как не связанны между собой и с увеличением их количества по моему мнению будет расти беспорядок в проекте. Хотя возможно я не прав.Что что, простите? Из какого источника доступ разметается? Лодеры надо использовать в одном месте ко всему проекту. Лодеры созданы для того, чтобы их можно быол переиспользовать (если ен брать в расчет что они еще решают проблемы асинкТасков), значит они по определению и должны разметаться по проектам. А то что они большие, то да , это так. (надеюсь вы каждый лодер пишете в отдельном классе)
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Задания на собеседовании, REST API.
Сделайте пакет loaders и храните их там. Они действительно требуют много кода, но создайте его в отдельном классе и вот проблема решена. Коллбеки что будут в UI, они у любой либы будут. Вот например один из моих примеров https://github.com/Mikhail-dev/TKS-Newsпо моему мнению будет расти беспорядок в проекте
-
- Сообщения: 6
- Зарегистрирован: 27 июл 2015, 17:20