Задания на собеседовании, REST API.

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
besenok47@mail.ru
Сообщения: 6
Зарегистрирован: 27 июл 2015, 17:20

Задания на собеседовании, REST API.

Сообщение besenok47@mail.ru » 28 окт 2015, 16:06

Здравствуйте уважаемые участники форума.

Зачастую задание на собеседовании 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 и тем объектом который будет загружать данные? Какой реализации этой задачи ожидает работодатель?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Задания на собеседовании, REST API.

Сообщение Mikhail_dev » 28 окт 2015, 16:24

Может это поможет в понимании. Там есть ссылка на проект
http://habrahabr.ru/post/250659/
2. Использовать Loaders ... доступ к данным из одного источника разметается по всему проекту... .
Что что, простите? Из какого источника доступ разметается? Лодеры надо использовать в одном месте ко всему проекту. Лодеры созданы для того, чтобы их можно быол переиспользовать (если ен брать в расчет что они еще решают проблемы асинкТасков), значит они по определению и должны разметаться по проектам. А то что они большие, то да , это так. (надеюсь вы каждый лодер пишете в отдельном классе)

Посмотрните в сторону либы Robospice, именно её советовало большинство спикеров на концеренции droidcon. Под капотом у ней сервис.

besenok47@mail.ru
Сообщения: 6
Зарегистрирован: 27 июл 2015, 17:20

Re: Задания на собеседовании, REST API.

Сообщение besenok47@mail.ru » 28 окт 2015, 16:43

Что что, простите? Из какого источника доступ разметается? Лодеры надо использовать в одном месте ко всему проекту. Лодеры созданы для того, чтобы их можно быол переиспользовать (если ен брать в расчет что они еще решают проблемы асинкТасков), значит они по определению и должны разметаться по проектам. А то что они большие, то да , это так. (надеюсь вы каждый лодер пишете в отдельном классе)
Я имел ввиду что будет 1 лоадер для получения профиля пользователя, 1 для получения списка новостей, 1 для поиска пользователей, и т.д при этом они ни как не связанны между собой и с увеличением их количества по моему мнению будет расти беспорядок в проекте. Хотя возможно я не прав.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Задания на собеседовании, REST API.

Сообщение Mikhail_dev » 28 окт 2015, 17:11

по моему мнению будет расти беспорядок в проекте
Сделайте пакет loaders и храните их там. Они действительно требуют много кода, но создайте его в отдельном классе и вот проблема решена. Коллбеки что будут в UI, они у любой либы будут. Вот например один из моих примеров https://github.com/Mikhail-dev/TKS-News

besenok47@mail.ru
Сообщения: 6
Зарегистрирован: 27 июл 2015, 17:20

Re: Задания на собеседовании, REST API.

Сообщение besenok47@mail.ru » 28 окт 2015, 20:35

Спасибо.

Ответить