Выбрать главу

Следующий компонент – это Broadcast receiver (приемник сообщений и событий). Broadcast receiver «слушает» и реагирует на события. И, по сути, он играет роль подписчика в модели «публикация-подписка».

В Android события представлены классом Intent. О нем мы поговорим подробнее немного позже. «Издатели» создают этот Intent и затем рассылают его, используя специальные методы, как бы отправляя в эфир. Далее его принимает Broadcast receiver, который и подписан на этот конкретный Intent. И, приняв Intent, он может отреагировать на произошедшее событие.

Пример приложения, которое использует Broadcast receiver – приложение для обмена сообщениями. Давайте представим, что кто-то хочет отправить мне SMS-сообщение. SMS-сообщение будет создано и отправлено через телефонную сеть и в конечном счете достигнет моего телефона. И когда это произойдет, Android выставит значок уведомления в панели уведомлений, который даст мне знать, что для меня пришло сообщение. Но вы, конечно, никогда не можете точно знать, в какой момент вы получите такое сообщение. Поэтому Android имеет некоторое программное обеспечение, которое просто «сидит» и «ждет» когда придет SMS-сообщение. И когда оно приходит, это программное обеспечение передает в эфир Intent SMS_received. И есть еще один Broadcast receiver, который слушает этот Intent SMS_received, и он, получив этот Intent, запустит сервис, который загрузит и сохранит входящее SMS-сообщение.

Последний компонент – это Content provider. Content provider позволяет приложениям хранить и обмениваться данными. Content provider использует интерфейс, подобный базам данных, но он больше, чем просто база данных. Например, Content provider сможет обрабатывать связи между процессами. Так что приложения, работающие в отдельных процессах, могут взаимодействовать и обмениваться данными безопасно и легко. Приложение «Браузер» является одним из примеров приложений, использующих Content provider. Если запустить «Браузер» и нажать на значок рядом с адресной строкой в браузере, откроется список закладок и сохраненных адресов веб-сайтов для быстрого доступа в будущем. Когда пользователь добавляет одну из этих закладок, браузер сохраняет ее в Content provider.

Если посмотреть на простейшее приложение «Hello Android», мы увидим всего одну Activity. Но мы будем рассматривать более сложные приложения, в нашем случае, включающее в себя две Activity. И, конечно, как вы понимаете, если можно использовать две Activity, то можно добавить и третью, и четвертую и так далее – просто будет больше одной.

Например, приложение «MapLocation» одним из видов Activity позволяет пользователю ввести почтовый адрес. Эта Activity имеет кнопку, которую пользователь может нажать, как только он ввёл адрес. И, нажав на эту кнопку, запустить вторую Activity – «Google Maps», которая представляет собой карту, отцентрированную на адрес, который пользователь только что ввёл.

Следующая схема показывает процесс написания и построения приложений под Android.

Во-первых, вы создаете исходный код и код ресурсов, которые составляют приложение. Далее, вы компилируете исходный код и подготавливаете свои ресурсы. Результатом этого шага является пакет Android или APK, который является исполняемым файлом приложения. Далее APK подписывается цифровой подписью, чтобы идентифицировать вас как разработчика и, наконец, APK устанавливается на устройство или эмулятор и запускается.

Ваше участие в процессе сборки как разработчика, как правило, включает следующие четыре шага:

определение ресурсов;

реализация классов приложения;

упаковка приложения;

установка и запуск приложения, в частности для тестирования и отладки.

Шаг 1, определение ресурсов приложения. Приложения для Android больше, чем просто исходный код. Они включают в себя исходники, такие как файлы лейаута (layout – размещение наэкранных элементов: кнопок, полей ввода и т. д.), строковых констант, изображений, меню, анимации и многое другое. Управление ресурсами отдельно от приложения имеет несколько преимуществ, одно из которых заключается в том, что вы можете легко изменить эти ресурсы без изменения и перекомпиляции исходного кода приложения.

Один распространенный тип ресурсов – strings (строки). В Android существует три типа строковых ресурсов. Отдельные строки – strings, массивы строк – arrays и формы множественного числа – plurals. Строки и массивы строк довольно понятны, давайте поговорим о plurals. Plurals в основном – это массивы строк, которые могут использоваться, чтобы выбрать определенные строки, связанные с определенной величиной (количеством), например, одна книга или две книги.

Строки обычно хранятся в xml-файлах в каталоге приложения res/values. Строка может включать форматирование и информацию о стилях. Такие вещи, как HTML-теги, например. Основным преимуществом хранения строковых констант в файле ресурсов является простота интернационализации Android-приложений, т.е. их перевод на иностранные языки. Если вы хотите создать приложение, переведенное на несколько разных языков, то рекомендуется выбрать язык по умолчанию – английский и поместить строки на английском языке в xml-файл strings в папку ресурсов, используемую по умолчанию – res/values. А файлы со строками на других языках – в соответствующие папки, например, для русского языка – в res/values-ru, для французского – в res/values-fr, немецкого – в res/values-de и так далее.