T.M. SoftStudio

feci quod potui, faciant meliora potentes

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

Программирование мобильных приложений для платформы Android

Лекция 1. Введение в платформу Android

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

Этот стек имеет несколько слоев, начиная от уровня сервисов операционной системы, которые управляют самим устройством, до стандартных приложений, таких как телефонные звонки, база данных контекста и веб-браузер.

Android также поставляется с набором разработчика SDK, который используется для создания Android приложений.

Кроме того, существует огромное количество документации, учебников, блогов и примеров, которые вы можете использовать, чтобы улучшить свое ​​собственное понимание Android.

В нижней части программного стека находится ядро Linux. Выше располагаются системные библиотеки и Android среда выполнения.

Далее идет богатый фреймворк для разработки новых приложений.

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

Рассмотрим каждый из этих слоев подробно, начиная с ядра Linux.

Слой Linux Kernel является самым нижним слоем программного обеспечения Android платформы.

Этот слой обеспечивает основные сервисы, которые любое Android устройство использует.

Linux ядро платформы Android, как и любое другое ядро Linux, содержит общие системные службы.

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

Ядро поддерживает управление памятью и процессами, так что несколько процессов могут выполняться одновременно, не мешая друг другу.

Ядро обрабатывает низкоуровневую информацию файлов и IO сети.

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

В дополнение к общим службам, которые поддерживаются любым Linux ядром, Linux ядро платформы Android также включает в себя несколько специфических Android компонентов.

Например, Linux ядро платформы Android включает в себя собственные сервисы управления питанием, так как мобильные устройства работают от батареи.

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

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

И, конечно, это лишь некоторые из специфические черт Android платформы.

Следующий слой включает в себя разнообразные системные библиотеки.

Эти библиотеки обычно написаны на языке C и C + + и поэтому их часто называют

native libraries.

И эти native-библиотеки обрабатывают большинство основных, чувствительных к производительности, действий на устройстве, такие как быстрый рендеринг веб-страниц и обновление экрана.

Например, Android платформа имеет свою системную С библиотеку, которая реализует стандартные вызовы OS-системы, которые обеспечивают создание процессов и потоков, математические вычисления, распределение памяти, и многое другое.

Также существует менеджер поверхности для обновления дисплея, медиа фреймворк для воспроизведения аудио и видео файлов, Webkit-движок для рендеринга и отображения веб-страниц, библиотека Open GL, для высокой производительности графики, и SQLite, для управления в памяти реляционными базами данных.

В дополнение к системным библиотекам, этот слой также включает среду выполнения Android, которая поддерживает создание и запуск Android приложений.

И есть два компонента Android среды выполнения - основные Java библиотеки и Dalvik виртуальная машина.

Что касается основных Java библиотек, то приложения для Android платформы, как правило, написаны на языке программирования Java.

И для упрощения написания приложений Android платформа предоставляет набор повторно используемых блоков Java.

Например, Java пакеты java.* и javax.* обеспечивают базовое программное обеспечение – общие структуры данных, механизмы параллельного вычисления и файловый ввод-вывод.

Пакеты android.* обеспечивают программное обеспечение, которое специфично для жизненного цикла мобильных приложений.

Пакеты org.* поддерживает различные интернет или веб-операции.

Пакеты junit.* поддерживают тестирование приложений.

Вторая часть Android среды выполнения представляет собой виртуальную машину Dalvik.

Виртуальная машина Dalvik является программным обеспечением, которое выполняет Android приложения.

Приложения для Android, как правило, написаны на Java.

Таким образом, можно предположить, что если приложения написаны на Java, они, вероятно, будут работать на стандартной Java виртуальной машине.

Но на самом деле это не так.

При написании приложения на Java для платформы Android – компилятор Java компилирует файл Java исходного кода во множество файлов Java байт-кода.

Далее, инструмент под названием DX преобразует файлы Java байт-кода в один файл формата байт-кода dex.

И этот файл байт-кода обычно называют classes.dex.

Затем файл dex упаковывается с другими ресурсами приложения и устанавливается

на устройстве.

И, наконец, когда пользователь запускает приложение, Dalvik виртуальная машина будет выполнять файл classes.dex.

Причина делать все это заключается в том, что виртуальная машина Dalvik, в отличие от Java виртуальной машины, была специально разработана для работы в условиях ограниченных ресурсов, которые являются типичными для мобильных устройств.

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

Например, мобильное устройство имеет медленный процессор, меньше памяти и ограниченный заряд батареи.

Следующий слой Android программного стека - каркас приложений.

Каркас приложения (application framework) содержит повторно используемое программное обеспечение, которое используют мобильные приложения.

Например, View-система содержит общие графические элементы, такие как кнопки и значки, которые многие приложения включают в свои GUI-интерфейсы.

Рассмотрим некоторые из компонентов каркаса приложений.

Одним из компонентов каркаса приложений является менеджер пакетов (package manager).

Менеджер пакетов является по существу базой данных, которая хранит трек всех приложений в настоящее время установленных на устройстве.

Если посмотреть на домашний экран телефона, то при нажатии на иконку запуска, телефон показывает набор значков, каждый из которых представляет пакет приложения, который хранится на телефоне.

Менеджер пакетов хранит информацию об этих приложениях.

И это полезно по нескольким причинам.

Например, это позволяет приложениям найти и связаться друг с другом, так что одно приложение может обмениваться данными с другим приложением или одно приложение может запросить сервисы у другого приложения.

Другой компонент фреймворка приложений - оконный менеджер.

Оконный менеджер, как следует из названия, управляет многочисленными окнами, которые составляют приложения.

Например, при запуске браузера, он появляется в виде двух окон.

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

Также есть главное окно приложения, которое показывает текущую веб-страницу.

Кроме того, приложение может использовать различные суб-окна, например, для показа меню или диалогов.

Как уже упоминалось ранее, фреймворк приложений также содержит View-систему.

View-система содержит много общих элементов графического интерфейса пользователя, таких как значки, поля ввода текста, кнопки и многое другое.

Если посмотреть на приложение телефона, верхний уровень пользовательского интерфейса приложения организован в виде набора вкладок.

Где каждая вкладка соответствует различному GUI-интерфейсу, который поддерживает свой набор задач.

Вкладка телефон обеспечивает набор номера.

Во вкладке журнал вызовов отображается список недавних входящих и исходящих вызовов.

Вкладка контакты показывает список сохраненных контактов.

Вкладка телефон имеет пользовательский интерфейс, который имитирует клавиатуру телефона.

Это клавиатура состоит из компонентов View-системы, таких как кнопки и текстовые поля.

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

Следующий компонент фреймворка приложений – менеджер ресурсов.

Этот компонент управляет не-компилируемыми ресурсами, которые включены в приложение, такими как строки, графика и файла GUI-компоновок.

Как пример не-компилируемых ресурсов, давайте вернемся к телефонному приложению.

Вкладка приложения содержит английские слова.

Но существует простой способ настроить приложения на других языках.

И этот способ заключается в том, что Android платформа позволяет определить строки приложения на нескольких языках.

Например, телефонное приложение имеет файл строк итальянских слов, а также файл строк английских слов.

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

Другой компонент фреймворк – менеджер активности (activity manager).

На верхнем уровне Android-активности часто соответствуют одному UI-экрану.

Приложение состоит из нанизанных вместе многочисленных активностей, через которые пользователь может перемещаться.

Менеджер активности помогает координировать и поддерживать такую ​​навигацию.

Так, предположим, я хочу слушать музыку.

Я нажму на значок лаунчера, чтобы увидеть мои приложения.

Оттуда я могу нажать на значок плеера, что запустит активность, которая передаст экрану GUI-интерфейс, показывающий музыку, которая есть на моем устройстве и которая отсортирована по исполнителям.

Я могу выбрать исполнителя и увидеть альбомы данного исполнителя.

Я могу выбрать какой-нибудь альбом, щелкнув по нему.

И это запустит другую активность, которая передаст экрану другой GUI-интерфейс, показывающий песни альбома, который я только что выбрал.

Теперь, если я нажму кнопку Back, я могу вернуться назад к последней активности и, например, я могу выбрать другой альбом.

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

Другой компонент фреймворка приложений реализует контент-провайдер.

Контент-провайдеры по существу являются базами данных, которые позволяют

приложениям хранить и обмениваться структурированной информацией.

Например, телефонное приложение может получить доступ к хранящейся контактной информации и использовать ее для набора телефонного номера.

И это может сделать, потому что контактная информация хранится в контент-провайдере.

Более того, контент-провайдеры предназначены для работы одновременно с различными приложениями.

Так что не только телефонное приложение может использовать контактную информацию, но и приложение для обмена сообщениями, а также различные социальные медиа-приложения.

Возвращаясь к телефонному приложению, выберем вкладку Контакты для доступа к хранящейся контактной информации.

Я могу выбрать один из контактов для быстрого набора номера контакта.

И я могу это сделать, потому что контактная информация хранится в контент-провайдере.

Следующий компонент фреймворка – это менеджер локации.

Менеджер локации позволяет приложениям получать расположение и информацию о движении, которая, например, генерируется системой GPS.

И это позволяет приложениям выполнять специфические задачи, такие как поиск направления от текущего местоположения.

Откроем приложение Google Карты, которое запрашивает менеджер локации для получения моего текущего местоположения, а затем показывает карту области вокруг этого текущего местоположения.

Последним компонентом фреймворка приложений, который мы рассмотрим, является менеджер уведомлений (Notification Manager).

Менеджер уведомлений позволяет приложению разместить информацию в панели уведомлений.

Например, чтобы пользователи знали, что произошли определенные события.

Например, предположим, я хочу отправить сообщение MMS.

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

Таким образом, получатель, вероятно, хочет знать, что я послал ему MMS сообщение, но при этом он не хотел бы, чтобы это сообщение нарушило его работу прямо сейчас.

Поэтому Android обработает это сообщение с помощью диспетчер уведомлений.

Это сработает, потому что на устройстве получателя сообщения есть программа, которая всегда ожидает входящие сообщения MMS.

Когда сообщение приходим, программное обеспечение использует диспетчер уведомлений, чтобы разместить значок уведомления в панели уведомлений.

И когда получатель готов, он может посмотреть панель уведомлений, которая покажет больше информации о конкретном уведомлении.

И если он нажмет это уведомление, MMS приложение будет запущено и можно будет прочитать и ответить на мое сообщение.

Последний слой стека Android программного обеспечения – это уровень приложений.

Как я уже говорил, Android поставляется с некоторыми встроенными приложениями, такими как домашний экран, Phone Dialer, веб-браузер, e-mail и многое другое.

И одна из вещей, которая действительно является плюсом Android системы – это то, что ни одно из этих приложений не встроено жестко в систему.

Если у вас есть лучшее приложение, вы можете заменить своим приложением любое из стандартных приложений.