И наконец, есть некоторый код, который определяет что сделать, когда пользователь нажимает кнопку Show Map. Этот код реализует интерфейс onClickListener («слушатель» кликов), в котором есть метод onClick, вызывающийся каждый раз, когда пользователь кликает по кнопке. Код в методе onClick сначала считывает текст, который пользователь ввел в поле адреса. Затем он обрабатывает этот текст, чтобы удалить пробелы, и преобразовывает его в формат, который понимает «Google Maps». Затем он запускает приложение «Google Maps» и передает ему этот преобразованный адрес.
Что этот код делает, более подробно мы рассмотрим позже, когда погрузимся в изучение классов Activity и Intent. Также для упрощения я не учел любую проверку на ошибки или проверку строки адреса, которая была введена. Но в конечном коде вы обязательно это сделаете.
Следующим шагом в создании Android-приложений является предоставление информации, которая позволяет Андроиду создать пакет приложения или APK, и эта информация записывается в манифесте – xml-файле androidmanifest.xml. Файл androidmanifest.xml содержит большое разнообразие упаковочной информации, включая имя приложения и список компонентов, которые составляют это приложение. Он также включает другую информацию, которую мы обсудим позже. Это такие вещи как: Permissions (полномочия), которые необходимы, чтобы запустить это приложение, аппаратные функции, такие как камера, если она нужна для работы этого приложения, и самая ранняя версия платформы, на которой это приложение сможет работать. Давайте рассмотрим файл androidmanifest.xml для «MapLocation».
Файл androidmanifest.xml находится в корневом каталоге приложения. Один из элементов, который мы видим здесь, является элементом uses-SDK. Этот элемент включает атрибут minSdkVersion, который определяет минимальный уровень API для этого приложения. И в нашем случае этот уровень равняется 13, что соответствуют Android 3.2.
Этот элемент также включает другой атрибут – targetSdkVersion, который определяет последний уровень API, для которого было протестировано это приложение. В данном случае это уровень 19, что соответствует версии Android 4.4.2.
Следующий элемент манифеста – application, который содержит различные атрибуты: иконку для этого приложения, метку, которая показана в строке заголовка приложения, элемент Activity, который перечисляет в нашем случае всего одну Activity – MapLocation, которое включает это приложение.
И последним шагом мы устанавливаем приложение на устройство или эмулятор, чтобы протестировать и отладить его.
Класс Activity
Activity – основной класс для взаимодействия с пользователем. Activity разработаны, чтобы обеспечить визуальный интерфейс, через который пользователь может взаимодействовать с приложением. И условно Activity должны быть модулями приложения в том смысле, что каждая Activity, как отдельный модуль, должна поддерживать в фокусе единственную вещь, которую пользователь может сделать с вашим приложением, например просмотр электронного письма или показ экрана входа в систему.
Когда пользователь выполняет свою задачу, он перемещается по цепочке из Аctivity, и Android помогает пользователям в навигации несколькими способами, поддерживая концепцию приложения, обеспечивая временное хранение Activity в стеке (backstack), так что они должным образом могут быть приостановлены и затем возобновлены при возврате из стека.
Таким образом задача (Task) в Android – это ряд связанных Activity. Эти связанные Activity могут, но не должны быть частью одного приложения. Одна задача (Task) может охватить несколько приложений.
Большинство задач запускается с домашнего экрана. Таким образом, когда пользователь запускает приложение с домашнего экрана, обычно запускается новая задача (Task). И когда пользователь нажимает кнопку «Домой», чтобы возвратиться назад к домашнему экрану, текущая задача, по крайней мере временно, приостанавливается.
Стек задачи (Task backstack) работает следующим образом. Когда Activity запущена, она заносится в верхнюю ячейку стека как часть текущей задачи. А когда эта Activity позже будет уничтожена, например, потому что пользователь нажал кнопку «Назад», или потому что Activity сама завершила свою работу программно, или даже потому что сам Android решил уничтожить эту Activity, чтобы освободить занимаемые ей ресурсы, тогда Activity удаляется из верхней ячейки стека задач.
Если же вместо уничтожения Activity будет запущена вторая Activity, то первая Activity продвинется вглубь стека, а ее место в верхней ячейке стека займет вторая Activity. Тогда после окончания работы второй Activity по кнопке «Назад» она будет уничтожена и удалена из стека, а в верхнюю ячейку стека и, соответственно на экран пользователя, вновь вернется первая Activity.