Виды приложений и их структура Лекция 2 Введение в разработку приложений для смартфонов на ОС Android
Содержание Введение Основные виды Android-приложений Безопасность Архитектура приложения, основные компоненты Манифест приложения Ресурсы Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 2
Введение Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 3
Общие вопросы Виды мобильных приложений и их особенности Организация исполнения приложений в ОС Android Обеспечение безопасной среды функционирования приложений Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 4
Особенности архитектуры Android-приложения, разработанные для смартфонов, вполне смогут выполняться и на планшетах Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 5
Основные виды Android-приложений Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 6
Виды приложений Приложения переднего плана Фоновые приложения Смешанные приложения Виджеты Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 7
Приложения переднего плана Выполняют свои функции только когда видимы на экране В свернутом виде выполнение приложений приостанавливается Например: игры текстовые редакторы видеопроигрыватели Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 8
Важно Знание жизненного цикла активности для гладкости переключения между фоновым и активным режимами Разработка удобного и интуитивно понятного интерфейса Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 9
Фоновые приложения После настройки не предполагают взаимодействия с пользователем Большую часть времени находятся и работают в скрытом состоянии Например: службы экранирования звонков SMS-автоответчики Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 10
Важно Помнить, что совершенно невидимые сервисы будут неуправляемыми Позволить пользователю только: Санкционирование запуска сервиса Настройка сервиса Приостановка работы сервиса Прерывание работы сервиса Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 11
Смешанные приложения Большую часть времени работают в фоновом режиме Допускают взаимодействие с пользователем даже после настройки Например: Мультимедиа-проигрыватели Чаты Почтовые клиенты Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 12
Важно Такие приложения, не теряя работоспособности в фоновом режиме, должны реагировать на пользовательский ввод При взаимодействии с пользователем должны учитывать свое текущее состояние Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 13
Виджеты Небольшие приложения, отображаемые в виде графического объекта на рабочем столе Например: приложения для отображения динамической информации Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 14
Важно Планируя разработку приложения, необходимо определить способ его использования, только после этого приступать к проектированию и непосредственно разработке Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 15
Безопасность Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 16
Жизнь приложения в ОС Android Android это многопользовательская ОС, в которой каждое приложение - отдельный пользователь Система назначает приложению уникальный пользовательский ID Доступ к элементам приложения имеет только пользователь с соответствующим ID Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 17
Жизнь приложения в ОС Android Каждому приложению соответствует отдельный Linux процесс Каждому процессу соответствует отдельный экземпляр виртуальной машины Dalvik Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 18
Обеспечение безопасности В среде функционирования приложений каждому приложению разрешен доступ только к компонентам, необходимым для его работы Если двум приложениям необходимо иметь доступ к файлам друг друга, им присваивается один и тот же пользовательский ID Если приложению требуется доступ к системным данным, пользователь даёт приложению такие полномочия во время установки Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 19
Архитектура приложения Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 20
Архитектура приложения Архитектура Android приложений основана на идее многократного использования компонентов, которые являются основными строительными блоками Каждый компонент является отдельной сущностью и помогает определить общее поведение приложения Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 21
Основные компоненты Активности Сервисы Контент-провайдеры Приемники широковещательных сообщений Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 22
Активности Видимая часть приложения (экран, окно, форма), отвечает за отображение графического интерфейса пользователя Например: Приложение для работы с будильником Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 23
Важно Приложение может иметь несколько активностей Активности приложения не зависят друг от друга Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 24
Сервис Компонент, который работает в фоновом режиме, выполняет длительные по времени операции или работу для удаленных процессов Например: Проигрывание музыки в фоновом режиме Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 25
Важно Может быть запущен другим компонентом и после этого работать самостоятельно, а может остаться связанным с этим компонентом и взаимодействовать с ним Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 26
Контент-провайдеры Управляет распределенным множеством данных приложения Например: Контент-провайдер в системе Android, управляющий информацией о контактах пользователя Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 27
Важно Данные могут храниться в файловой системе, в базе данных SQLite, в сети Позволяет другим приложениям при наличии у них соответствующих прав делать запросы или даже менять данные Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 28
Приемники широковещательных сообщений Приемник компонент, который реагирует на широковещательные извещения Например: Извещение о низком заряде батареи Инициирование широковещания Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 29
Важно Не отображают пользовательского интерфейса Могут создавать уведомление на панели состояний Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 30
Иерархия классов Android SDK Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 31
Класс View Основной строительный блок для компонентов пользовательского интерфейса (UI) Определяет прямоугольную область экрана и отвечает за прорисовку и обработку событий Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 32
Класс View Базовый класс для виджетов (GUI widgets) и класса ViewGroup Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 33
Класс Intent Используются для передачи сообщений между основными компонентами приложений Содержит описание операции, которая должна быть выполнена, и обычно используется для запуска активности или сервиса Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 34
Класс Intent Механизмы передачи намерений: Запуск активности, новое действие Context.startActivity() или Activity.startActivityForResult() Запуск сервиса Context.startService(), связь вызывающего компонента и сервиса Context.bindService() Доставка объекта-намерения приемникам широковещательных сообщений Context.sendOrderedBroadcast(), Context.sendStickyBroadcast(), Context.sendBroadcast() Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 35
Класс Intent В этой системе сообщений не случается накладок: сообщение-намерение, отправленное определенному компоненту, будет получено именно этим компонентом и никем другим Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 36
Жизненный цикл компонент Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 37
Активности (Activities) Активность это окно, несущее графический интерфейс пользователя Обычно занимает весь экран устройства, однако возможно создавать полупрозрачные или плавающие диалоговые окна Мобильные приложения обычно содержат несколько активностей Одна из активностей определяется как «главная», и именно ее пользователь видит при первом запуске приложения Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 38
Активности (Activities) Методы класса Activity: onCreate() – вызывается при создании активности. Необходимо инициализировать setContentView() onRestart() – запуск приостановленной активности onStart() - вызывается перед тем, как активность станет видимой для пользователя onResume() – вызывается перед тем, как активность начнет взаимодействовать с пользователем Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 39
Активности (Activities) Методы класса Activity: onStop() – вызывается, когда активность становиться не видимой для пользователя onDestroy() – уничтожение активности onPause() - вызывается системой при потере активностью фокуса. Вызывается onResume(), если активность вернется на передний план, или onStop(), если активность будет скрыта от пользователя Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 40
Жизненный цикл активности Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 41
Сервисы (Services) Компонент, предназначенный для выполнения длительных операций в фоновом режиме Способы существования сервисов: сервис запущен (started) и работает в фоновом режиме пока не выполнит свою задачу сервис привязан (bound) к одному/нескольким компонентам, предлагает интерфейс для взаимодействия с компонентом и работает пока привязан хотя бы к одному компоненту Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 42
Сервисы (Services) Методы класса Service: onStartCommand() - вызывается системой, когда некоторый компонент(активность) вызывает метод startService(). stopSelf() - остановка onBind() - вызывается системой, когда некоторый компонент желает привязать к себе сервис и вызывает метод bindService(). Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 43
Сервисы (Services) Методы класса Service: onCreate() вызывается системой при первом обращении к сервису для выполнения первоначальных настроек. Вызывается до вызова методов onStartCommand() и/или onBind() onDestroy() - вызывается, когда сервис выполнил все действия Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 44
Жизненный цикл сервиса Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 45
Контент-провайдеры (Content Providers) Управляет доступом к хранилищу данных Класс ContentProvider - обеспечивает интерфейс между контент-провайдером и другими приложениями Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 46
Контент-провайдеры (Content Providers) Необходимы в следующих случаях: приложение предоставляет сложные данные или файлы другим приложениям приложение позволяет пользователям копировать сложные данные в другие приложения приложение предоставляет специальные варианты поиска, используя поисковую платформу (framework) Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 47
Контент-провайдеры (Content Providers) Проектирование способа хранения данных: Если данные представлены файлом, то провайдер может возвращать ссылку на файл Если данные представлены некоторой структурой, необходимо хранить данные в табличной форме Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 48
Контент-провайдеры (Content Providers) Создание класса-наследника от класса ContentProvider : query() - извлекает данные из провайдера insert() - добавляет новую строку update() - обновляет строки delete() – удаляет строки getType() - возвращает String в формате MIME onCreate() - инициализацию провайдера Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 49
Контент-провайдеры (Content Providers) Определение строки авторизации провайдера, URI для его строк и имен столбцов: Если от провайдера требуется управление намерениями, необходимо определить действия намерений, внешние данные, флаги и разрешения, которые необходимы приложениям для доступа к данным провайдера Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 50
Приемники широковещательных сообщений (Broadcast Receivers) Широковещательный приемник является наследником класса BroadcastReceiver. Класс рассчитан на получение объектов-намерений отправленных методом sendBroadcast() Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 51
Нормальные широковещательные сообщения передаются с помощью Context.sendBroadcast Направленные широковещательные сообщения передаются с помощью Context.sendOrderedBroadcast Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 52 Приемники широковещательных сообщений (Broadcast Receivers)
Манифест приложения Корневой каталог каждого приложения под Android должен содержать файл AndroidManifest.xml Содержит всю необходимую информацию, используемую системой для запуска и выполнения приложения Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 53
Манифест приложения Основная информация в манифесте: Имя Java пакета приложения Описание компонентов приложения Определение процессов Объявление полномочий, которыми должно обладать приложение для доступа к защищенным частям API и взаимодействия с другими приложениями Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 54
Манифест приложения Основная информация в манифесте: Объявление полномочий, которыми должны обладать другие приложения для взаимодействия с компонентами данного Список вспомогательных классов Определение минимального уровня Android API для приложения Список библиотек связанных с приложением Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 55
Ресурсы Каждый тип ресурсов необходимо размещать в специальной поддиректории папки res/ а) используется компоновка по умолчанию (приложение не содержит альтернативы) б) каждое устройство использует соответствующую компоновку Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 56
Ресурсы animator/ свойства анимации anim/ анимация преобразований color/ списки цветов drawable/ графические файлы layout/ компоновка элементов пользовательского интерфейса menu/ все меню приложения values/ простые значения строк, чисел, цвета Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 57
Ресурсы Все ресурсы после определения могут быть доступны по ссылке на их ID, которые определены в автоматически генерируемом классе R. Для каждого типа ресурсов в R классе существует подкласс, например, R.drawable для всех графических ресурсов Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 58
Список дополнительных источников Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. М. : Эксмо, с. (Мировой компьютерный бестселлер). als.html als.html devel/ devel/ Введение в разработку приложений для смартфонов на ОС Android. Лекция 2. Виды приложений и их структура. 59