Привет, Android (несколько экранов). Подробные сведения

В этом руководстве из двух частей описано, как добавить функции для работы со вторым экраном в базовое предложение Phoneword (см. в руководство по началу работы с Android). Попутно вводятся сведения об основных стандартных блоках приложения Android. Здесь также приводится подробная информация об архитектуре Android с описанием структуры и возможностей приложений Android.

В кратком руководстве "Привет, Android" (несколько экранов) вы создали и запустили первое приложение Xamarin.Android с несколькими экранами.

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

Основы архитектуры Android

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

Блоки приложения Android

Приложение Android состоит из коллекции специальных классов Android под названием "Блоки приложений", объединенных вместе с любым количеством ресурсов приложения - изображений, тем, вспомогательных классов и т. д. — они координируются XML-файлом, называемым манифестом Android.

Блоки приложения формируют основу приложений Android, так как они позволяют выполнять задачи, обычно неразрешимые с помощью стандартного класса. Двумя самыми важными являются действия и службы.

  • Действие — действие соответствует экрану с пользовательским интерфейсом, и он концептуально похож на веб-страницу в веб-приложении. Например, в приложении канала новостей экран входа будет первым действием, прокручиваемый список элементов новостей будет вторым действием, а страница сведений для каждого элемента будет третьим действием. Дополнительные сведения о действиях см. в руководстве Жизненный цикл действия.

  • Служба — службы Android поддерживают действия, выполняя длительные задачи и выполняя их в фоновом режиме. Службы не имеют пользовательского интерфейса и используются для обработки задач, которые не привязаны к экранам, например воспроизведение песни в фоновом режиме или отправка фотографий на сервер. Дополнительные сведения о службах см. в руководствах Создание служб и Службы Android.

Приложение Android не может использовать все типы блоков и часто имеет несколько блоков одного типа. Например, приложение Phoneword из краткого руководства "Привет, Android" состояло только из одного действия (экран) и нескольких файлов ресурсов. В простом приложении проигрывателя музыки может быть несколько действий и служба для воспроизведения музыки во время работы приложения в фоновом режиме.

Намерения

Следующим базовым понятием в приложениях Android является объект Intent. Android разработан вокруг принципа наименьшей привилегии — приложения имеют доступ только к блокам, которым они требуются работать, и они имеют ограниченный доступ к блокам, составляющим операционную систему или другие приложения. Аналогичным образом блоки слабо связаны — они предназначены для того, чтобы иметь мало знаний и ограниченный доступ к другим блокам (даже блоки, которые являются частью одного приложения).

Для обмена данными блоки приложения отправляют туда и обратно асинхронные сообщения, называемые объектами Intent. Объекты Intent содержат сведения о принимающем блоке и иногда некоторые данные. Объект Intent, отправленный из одного компонента приложения, запускает какое-то событие в другом компоненте приложения, что приводит к привязке двух компонентов и их последующему взаимодействию. Отправляя объекты Intent туда и обратно, можно получить блоки для координации сложных действий, например запуска приложения камеры для записи и сохранения, сбора сведений о расположении или переходе с одного экрана на следующий.

AndroidManifest.XML

Блок, добавляемый в приложение, регистрируется с помощью специального XML-файла, называемого манифестом Android. Манифест отслеживает все блоки приложений в приложении, а также требования к версиям, разрешения и связанные библиотеки— все, что операционная система должна знать для запуска приложения. Манифест Android также работает с действиями и объектами Intent, чтобы контролировать, какие действия подходят для данного компонента действия. Эти дополнительные возможности манифеста Android рассматриваются в руководстве Работа с манифестом Android.

В версии приложения Phoneword с одним экраном наряду с дополнительными ресурсами, такими как значки, использовалось только одно действие, одна цель и файл AndroidManifest.xml. В версию приложения Phoneword с несколькими экранами было добавлено дополнительное действие. Оно было запущено из первого действия с помощью объекта Intent. В следующем разделе более подробно рассматривается использование объектов Intent для создания навигации в приложениях Android.

Навигация в Android

Для перехода между экранами использовались объекты Intent. Пришло время углубиться в этот код, чтобы увидеть, как работают объекты Intent, и понять их роль в навигации в Android.

Запуск второго действия с помощью объекта Intent

В приложении Phoneword объект Intent использовался для запуска второго экрана (действия). Начните с создания объекта Intent, передачи текущего контекста (this, ссылающегося на текущий контекст) и типа блока приложения, который вы ищете (TranslationHistoryActivity):

Intent intent = new Intent(this, typeof(TranslationHistoryActivity));

Контекст — это интерфейс для глобальных сведений о среде приложения. Он позволяет новым объектам знать, что происходит с приложением. Если считать объект Intent сообщением, вы указываете имя получателя сообщения (TranslationHistoryActivity) и адрес получателя (Context).

В Android можно присоединять простые данные к объекту Intent (сложные данные обрабатываются по-другому). В примере приложения Phoneword PutStringArrayExtra используется для присоединения списка номеров телефонов к объекту Intent, и StartActivity вызывается в получателе объекта Intent. Завершенный код выглядит следующим образом:

translationHistoryButton.Click += (sender, e) =>
{
    var intent = new Intent(this, typeof(TranslationHistoryActivity));
    intent.PutStringArrayListExtra("phone_numbers", _phoneNumbers);
    StartActivity(intent);
};

Дополнительные понятия, представленные в Phoneword

В приложении Phoneword представлено несколько понятий, не охваченных этим руководством. В их число входят следующие:

Строковые ресурсы — в приложении Телефон word для текста TranslationHistoryButton задано значение "@string/translationHistory". Синтаксис @string означает, что строковое значение хранится в файле строковых ресурсовStrings.xml. В файл Strings.xml было добавлено следующее значение для строки translationHistory:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="translationHistory">Call History</string>
</resources>

Дополнительные сведения о строковых ресурсах и других ресурсах Android см. в руководстве по ресурсам Android.

ListView и ArrayAdapter . ListView — это компонент пользовательского интерфейса, предоставляющий простой способ представления списка строк прокрутки. Экземпляру ListView требуется адаптер, позволяющий заполнять его данными из представлений строк. Для заполнения пользовательского интерфейса TranslationHistoryActivity использовалась следующая строка кода:

this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);

ListView и адаптеры выходят за рамки данного документа, но рассматриваются в исчерпывающем руководстве по ListView и адаптерам. Вруководстве по заполнению ListView данными описано, как использовать встроенные классы ListActivity и ArrayAdapter для создания и заполнения ListView без определения пользовательского макета, как это сделано в примере приложения Phoneword.

Итоги

Поздравляем! Вы создали свое первое приложение Android с несколькими экранами! В этом руководстве были представлены стандартные блоки приложения Android и объекты Intent, которые использовались для создания приложения Android с несколькими экранами. Теперь у вас есть прочные знания, необходимые для разработки приложений Xamarin.Android.

Далее вы узнаете, как создавать кроссплатформенные приложения с помощью Xamarin — см. руководства по созданию кроссплатформенных приложений.