Главная » Разработка для Android » ЭФФЕКТИВНОЕ CI ИСПОЛЬЗОВАНИЕ JAVA ДЛЯ ANDROID

0

 

Были описаны принципы работы с идиомами Java. Мы подробнее рассмотрим идеи, и поговорим об идиомах Java применительно к платформе Android.

ФРЕЙМВОРК ANDROID

Двадцать лет назад типичное компьютерное приложение запускалось из командной строки, а весь объем его кода строился на уникальной программной логике. Но в наши дни приложения требуют очень сложной поддержки для работы с интерактивными пользовательскими интерфейсами, управления сетью, обработки вызовов и т. д. Логика поддержки должна быть одинаковой для всех приложений. Во фреймворке Android для решения этих проблем предлагается подход, ставший практически общепринятым, особенно в условиях, когда окружения приложений становятся все сложнее. Итак, говорят о скелетном приложении (skeleton application), или шаблоне приложения (application template).

Когда мы создавали простое скелетное приложение, при помощи которого проверяли установку нашего комплекта ПО для программирования под Android, приложение получилось полноценным и его вполне можно запускать. Эта программа способна выполнять сетевые запросы, отображать вывод на экране и обрабатывать экранный ввод. Данное приложение также могло обрабатывать входящие вызовы, и хотя пользоваться такой функцией мы не собирались, программа также могла проверять ваше местоположение. В программу еще не передана никакая полезная функциональность (логика), с которой программа могла бы работать. Это и есть скелетное приложение.

При работе с фреймворком Android задача разработчика заключается не столько в том, чтобы сделать полнофункциональную программу, сколько в том, чтобы реализовать нужные поведения, а потом встроить их в скелетное приложение в правильно подобранных точках расширения. Девиз МасАрр, одного из первых фрейм-ворков, где применялись скелетные приложения, таков: «Не вызывай нас, мы сами вызовем тебя». Итак, если создание приложений для Android принципиально сводится к пониманию того, как нужно расширять фреймворк, целесообразно рассмотреть некоторые универсальные проверенные методы, помогающие делать такие расширения.

Библиотеки Android

Android добавляет для работы несколько новых пакетов, которые, вместе с несколькими деревьями пакетов из состава традиционного множества пакетов Java (J2SE), образуют интерфейс программирования приложений для среды времени исполнения Android. Сделаем отступление и рассмотрим, какие компоненты входят в состав этого комбинированного API.

android и dalvik

В этих деревьях пакетов содержится вся Android-специфичная часть среды времени исполнения Android. Данные библиотеки рассматриваются на протяжении большей части нашей книги, поскольку в их числе – библиотеки для работы с графическим пользовательским интерфейсом Android и работы с текстом. Эти библиотеки называются android. graphi cs, android. view, android. widget и android. text. К данной категории относятся также библиотеки фреймворка приложений – android. арр, android.content и android.database. В них, в свою очередь, содержатся другие ключевые фреймворки, ориентированные на мобильное программирование, в частности android.telephony и android.webkit. Опытный программист, работающий с Android, вероятно, знаком как минимум с несколькими первыми пакетами из перечисленных здесь. Чтобы ознакомиться с документацией Android в контексте дерева пакетов, можете начать с «верхушки» документации по разработке для Android – http:// developer.android.com/reference/packages.html.

Java

В этом пакете содержится реализация основных библиотек среды времени исполнения Java. В пакете java.lang находится определение класса Object, который является базовым для всех объектов Java. В Java также имеется пакет uti 1, в котором находится фреймворк коллекций Java: Array, Li sts, Map, Set и Iterator, а также их реализации. В библиотеке коллекций Java предоставляется хорошо сконструированный набор структур данных для языка Java – благодаря этим структурам вы избавляетесь от необходимости писать собственные списки со ссылками.

Как было указано, в пакете uti 1 содержатся коллекции из двух различных поколений. Некоторые происходят из Java 1.1, а другие основаны на более новой, пересмотренной парадигме коллекций. Коллекции из 1.1 (например, Vector и Hashtable) полностью синхронизированы, их интерфейсы отличаются меньшим единообразием. Более новые версии (например, HashMap и ArrayLi st) не сихронизи-рованы, но имеют лучшую взаимную совместимость и их следует использовать в первую очередь.

Для поддержания совместимости в рамках языка Java библиотеки Android также содержат реализации некоторых устаревших классов, пользоваться которыми вообще не следует. Например, во фреймворке Collections имеется класс Di ctionary, который совершенно устарел и не должен применяться. Интерфейс Enumeration заменен на Iterator, a TimerTask – на ScheduledThreadPool Executor из фреймворка многопоточных приложений (Concurrency). В справочной документации по Android эти устаревшие типы описаны и идентифицируются очень хорошо.

В Java также содержатся базовые типы для некоторых других широко применяемых объектов, в частности Currency, Date, TimeZone и UUID, а также базовые фрейм-ворки ввода-вывода, работы в сети, многопоточного исполнения и обеспечения безопасности.

Пакеты awt и rmi отсутствуют в иерархической структуре той версии Java, которая используется с Android. Пакет awt заменяется библиотеками графического пользовательского интерфейса Android. Отсутствует единый аналог для системы удаленных сообщений (remote messaging), но внутри системы действуют ServiceProviders, использующие Parcel ables. Этот механизм описан в разделе «Сериализация» данной главы. Он обеспечивает функционал, схожий со службой удаленных сообщений.

javax

Этот пакет очень напоминает пакет Java. В нем содержатся элементы языка Java, которые официально считаются опциональными. Здесь вы найдете библиотеки, поведения из которых полностью описаны, но они не обязательны для полноценной реализации языка Java. Поскольку в состав среды времени исполнения Android не входят некоторые компоненты, которые являются обязательными, в реализации javax для Android существуют характерные черты, необходимые для того, чтобы пакеты Android максимально напоминали пакеты Java. В обоих деревьях пакетов содержатся реализации библиотек, описанных как компоненты языка Java.

Самый важный элемент в javax – это фреймворк XML. Там находятся инструменты синтаксического разбора SAX и DOM, реализация XPath и XSLT.

Кроме того, в пакете javax содержатся важные расширения системы безопасности, а также АРІ для OpenGL. Опытный программист, работающий с Java, заметит, что в реализации пакетов javax, применяемой в среде времени исполнения Android, не хватает нескольких важных разделов. В частности, тех, которые заняты работой с пользовательским интерфейсом и медийными компонентами. Отсутствуют, например, разделы javax. swing, javax. sound и прочие, подобные им. Их место занимают другие пакеты, специфичные для Android.

org.apache.http

В этом дереве пакетов содержится стандартная реализация Apache для клиента и сервера HTTP – HttpCore. В данном пакете находится все необходимое для обмена информацией по протоколу HTTP, в том числе классы, представляющие сообщения, заголовки, соединения, запросы и отклики.

Проект Apache HttpCore расположен в Интернете по адресу http://hc.apache.org/ httpcomponents-core/index.html.

org.w3c.dom, org.xml.sax, org.xmlpull, and org.json

Эти пакеты являются определениями общедоступных АРІ для некоторых широко используемых форматов данных: XML (http://www.w3.org/standards/xml), XML Pull (http://www.xmlpull.org/index.shtml) и JSON (http://www.json.org).

Расширение Android

Итак, теперь у вас есть базовая путевая карта для перемещения по фреймворку Android, и возникает естественный вопрос: «Как воспользоваться всем этим, чтобы написать собственное приложение?» Как расширить тот фреймворк, который мы только что описали как очень сложный, но «неживой» сам по себе, и сделать на его основе какое-нибудь полезное приложение?

Логично, что на этот вопрос есть несколько ответов. Библиотеки Android организованы так, что они позволяют процессам получать доступ к фреймворку на различных его уровнях.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии