Анатомия приложения для Android

  1. Действия для Android
  2. Фрагменты Android
  3. Андрой д Интент с
  4. Трансляция Интенты
  5. Broadcast Receiver s
  6. Сервисы Android
  7. Поставщики контента
  8. резюме

Вы читаете пример главы из Android Studio 3.2 Edition этой книги.

Приобретите полностью обновленную версию Android Studio 3.4 / Android 9 / Jetpack этой публикации в формате eBook (29,99 долл. США) или Print (45,99 долл. США).

Основы разработки Android Studio 3.4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц.

4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц


Независимо от вашего предыдущего опыта программирования, будь то на базе Windows, MacOS, Linux или даже iOS, велика вероятность того, что разработка Android совсем не похожа на все, с чем вы сталкивались раньше.

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



Действия для Android

Те, кто знаком с объектно-ориентированными языками программирования, такими как Java, Kotlin, C ++ или C #, будут знакомы с концепцией инкапсуляции элементов функциональности приложения в классы, которые затем создаются как объекты и управляются для создания приложения. Поскольку приложения для Android написаны на Java и Kotlin, это все еще очень актуально. Android, однако, также поднимает концепцию повторно используемых компонентов на более высокий уровень.

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

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

Действия создаются как подклассы класса Android Activity и должны быть реализованы так, чтобы быть полностью независимыми от других действий в приложении. Другими словами, совместное действие не может полагаться на вызов в известной точке в потоке программы (поскольку другие приложения могут использовать действие непредвиденным образом), и одно действие не может напрямую вызывать методы или получать доступ к данным экземпляра другого действия. Это, вместо этого, достигается с помощью Intents и Content Providers.

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

Фрагменты Android

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

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


Андрой д Интент с

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

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

Трансляция Интенты

Другой тип намерения, Broadcast Intent, является общесистемным намерением, которое отправляется всем приложениям, которые зарегистрировали «заинтересованного» Broadcast Receiver. Например, система Android обычно отправляет Broadcast Intents, чтобы указать изменения в состоянии устройства, такие как завершение запуска системы, подключение внешнего источника питания к устройству или включение или выключение экрана.

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

Broadcast Receiver s

Приемники широковещания - это механизм, с помощью которого приложения могут реагировать на намерения вещания. Приемник широковещательной передачи должен быть зарегистрирован приложением и настроен с помощью фильтра намерений, чтобы указать типы широковещательной передачи, в которых он заинтересован. Когда передается соответствующее намерение, получатель будет вызываться средой выполнения Android независимо от того, работает ли приложение, которое зарегистрировало получателя, в данный момент. Затем у получателя есть 5 секунд, чтобы выполнить все необходимые для этого задачи (такие как запуск Сервиса, обновление данных или уведомление пользователя) перед возвратом. Приемники вещания работают в фоновом режиме и не имеют пользовательского интерфейса.

Вы читаете пример главы из Android Studio 3.2 Edition этой книги.

Приобретите полностью обновленную версию Android Studio 3.4 / Android 9 / Jetpack этой публикации в формате eBook (29,99 долл. США) или Print (45,99 долл. США).

Основы разработки Android Studio 3.4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц.

4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц

Сервисы Android

Сервисы Android - это процессы, которые работают в фоновом режиме и не имеют пользовательского интерфейса. Они могут быть запущены и впоследствии управляться с операций, приемников вещания или других служб. Службы Android идеально подходят для ситуаций, когда приложению необходимо продолжить выполнение задач, но необязательно нужен пользовательский интерфейс, чтобы быть видимым для пользователя. Хотя Службам не хватает пользовательского интерфейса, они все равно могут уведомлять пользователя о событиях с помощью уведомлений и тостов (небольших уведомляющих сообщений, которые появляются на экране без прерывания видимой в данный момент активности), а также могут выдавать Intents.

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

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

Поставщики контента

Поставщики контента реализуют механизм обмена данными между приложениями. Любое приложение может предоставить другим приложениям доступ к своим базовым данным посредством реализации контент-провайдера, включая возможность добавлять, удалять и запрашивать данные (в зависимости от разрешений). Доступ к данным обеспечивается через универсальный идентификатор ресурса (URI), определенный поставщиком контента. Данные могут быть переданы в виде файла или всей базы данных SQLite.

Нативные приложения Android включают в себя ряд стандартных контент-провайдеров, позволяющих приложениям получать доступ к данным, таким как контакты и медиа-файлы. Поставщики контента, доступные в настоящее время в системе Android, могут быть найдены с помощью Content Resolver.

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

В дополнение к файлу манифеста и файлам Dex, которые содержат байт-код, пакет приложений Android также обычно содержит коллекцию файлов ресурсов. Эти файлы содержат ресурсы, такие как строки, изображения, шрифты и цвета, которые появляются в пользовательском интерфейсе вместе с XML-представлением макетов пользовательского интерфейса. По умолчанию эти файлы хранятся в подкаталоге / res иерархии проекта приложения.

Когда приложение компилируется, создается класс с именем R, который содержит ссылки на ресурсы приложения. Файл манифеста приложения и эти ресурсы объединяются для создания так называемого контекста приложения. Этот контекст, представленный классом контекста Android, может использоваться в коде приложения для получения доступа к ресурсам приложения во время выполнения. Кроме того, для контекста приложения может быть вызван широкий спектр методов для сбора информации и внесения изменений в среду приложения во время выполнения.

резюме

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

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

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

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

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

Вы читаете пример главы из Android Studio 3.2 Edition этой книги.

Приобретите полностью обновленную версию Android Studio 3.4 / Android 9 / Jetpack этой публикации в формате eBook (29,99 долл. США) или Print (45,99 долл. США).

Основы разработки Android Studio 3.4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц.

4 - Java Edition Печатные издания и электронные книги (ePub / PDF / Kindle) содержат 89 глав и более 700 страниц