Open Source бібліотека Enroscar - всім Android - розробникам

article img {margin: 0 auto; border: 1px dashed # 999;}

Протягом трьох років роботи в сфері розробки мобільних додатків, часто стикаєшся з однотипними завданнями. Наприклад, робота з серверним API, який змінюється в залежності від типу завдання. Все, що було напрацьовано за кілька років командою Stanfy , увійшло в Open Source бібліотеку Enroscar, яка була вже доступна на Google code. Всі дані, які увійшли в цю бібліотеку, ми активно використовуємо у всіх наших Android проектах.

Бібліотека «Enroscar» - це рішення, спрямоване на розробку клієнт-серверних додатків і спрощує роботу із зовнішніми API. На базі Enroscar були створені такі Android програми, як Кинопоиск, Djuice Music, Обозреватель.

Робота з API

Найголовніший і зручний інструмент - це Frame Work для роботи з API. Він включає в себе основне ядро, сервіс, який працює асинхронно, в окремому потоці і за допомогою набору необхідних Callback взаємодіє з активностями і фрагментами.

Ви можете створювати необхідні запити, формувати на основі опису цих запитів і відповідних баз RequestDescription, будувати запити за допомогою класів RequestBuilder. Фактично, ви працюєте з API за допомогою BoundService. З коробки підтримується JSOM і XML c відповідної реалізацією.

Робота із зображеннями

Ще один цікавий інструмент - це ImagesManager. Це такий набір класів, які відповідають за завантаження зображень по http. Досить часто виникає необхідність підвантаження зображень з сервера або з вебу. Такі завантаження краще робити в окремому потоці, асинхронно. FrameWork вирішує багато проблем, пов'язаних із завантаженням зображення.

В бібліотеці є спеціальна дворівнева система Cache. Зображення можна кешувати в пам'ять телефону або на SD карту, і відповідні інструменти для роботи з Cache.

Набір кастомних Views був зроблений при виникненні різних проблем. Зокрема є трохи розширений ImageView, який підтримують набір декораторів. Є вже готовий набір декораторів, де можна накладати зображення, змінювати його або створити свій набір.

Інші приклади View - GalleryView, він оптимізує стандартний Gallery. Є також набір ScrollView, який зберігає свою позицію після переворотів.

Базові активності

Коли ви працюєте з додатками, найчастіше у вас є одна, дві базові активності. У нашій бібліотеці ця концепція теж реалізована і підтримується на рівні ядра. У вас є загальна поведінка для активності, наприклад, якась базова активність, і поведінка базової активності, яке можна модифікувати. Така поведінка буде спільним для всіх ваших активностей і фрагментів у вашому додатку.

Інтеграція статистики

Підтримується інтеграція з інструментами збору статистики. Зокрема інтегрований менеджер Flurry, але є адаптер, який дозволяє реалізувати свої менеджери зі збору статистики.

Музичні сервіси

Є кілька цікавих класів: сервіс для відтворення музики, реалізації компонентів, пов'язаних з аудіо фокусом. Наприклад, при вхідному дзвінку музика в плей листі приглушається або призупиняється, для того, щоб користувач міг чути телефонний дзвінок.

Оптимізація роботи з API

Детальніше хотілося б розповісти про те, як реалізована робота з API.

Є активність або фрагмент, який необхідно взаємодіяти з сервером по абстрактному API. Ключове поняття - це API Methods Support, клас, який відповідає за виконання вашого запиту. Він містить метод performRequest, в який приходить опис запиту. Важливий компонент - ApplicationService, він реалізує взаємодію з API в асинхронному режимі. Після того, як прийшло повідомлення в сервіс, відбувається звернення до класу RequestMethod, останній відповідає за відправку HTTP-запиту.

Відправляє запит RequestMethod, для нього потрібна своя реалізація, але є тести та приклади, як це робити.

Server API requests invocation

Після того, як відповіді від сервера були отримані, їх потрібно якимось чином обробити. RequestMethodHandler відповідає за ваше взаємодія з серверним API. Це може бути XML JSON або ваша реалізація.

Після того, як ми отримали модель, з'являється поняття ParserContent - це своєрідне сховище, куди складаються всі ваші об'єкти, в тому стані, в якому ви отримали їх від сервера. ParserContent знає як їх треба обробити і що при цьому відбувається.

ContextAnalyzer - це клас, який відповідає за пост обробку запиту. Наприклад, ви відправили запит, отримали відповідь. Тепер ви можете використовувати готову модель або додатково її обробити. Для чого це робиться? Наприклад, для того, щоб покласти в базу даних якісь значення. Для цього використовується ContextAnalyzer. Він може реалізовуватися для різних ParserContent, але ви можете зробити і свою посаду обробку, за допомогою ContextAnalyzer або іншого інструменту. За допомогою методів Callback результат через ApplicationService і API Methods Support приходить в активність у вигляді моделі, з якою ви вже можете працювати. Є готовий набір Callback, які вам знадобляться. Вони підкажуть, як обробити цю модель, що сталося, чи був відповідь помилковим, успішним і так далі.

В бібліотеці є Application клас, який реалізує взаємодію з ImagesManager і підтримку роботи з API. Для того, щоб ваше додаток коректно інтегрувалося з бібліотекою крім стандартних речей необхідно успадковуватися від класу Application і визначити Authority для роботи з базою даних і Cache.

Приклади роботи з бібліотекою можна побачити на Google Code .

У Open Source бібліотеці «Enroscar» від Stanfy зібрані приклади проектів і тести модулів для наочних прикладів роботи із запитами API сервера. Ми плануємо активно працювати над розширенням бібліотеки та створенням документації до неї найближчим часом.

Чи була вам корисна наша бібліотека? Чекаємо ваших коментарів .

Опубліковано: 14/03/12 @ 02:23
Розділ Різне

Рекомендуємо:

Життя і побут американських далекобійників
Живі тексти для Вашого сайту
Тури до Німеччини в Бонн
Тури до Німеччини в Бонн
47-й випуск подкасту « Відверто про IT кар'єризм ». Бесіда з Директором Центру інновацій Microsoft Віктором Каукой