В этой серии мы изучаем основные функции разработки Android, которые необходимо знать, чтобы начать создавать приложения. Пока что мы рассмотрели структуру и типичные элементы приложения Android, включая элементы пользовательского интерфейса и хранилище данных. Вы можете использовать то, что мы уже рассмотрели, чтобы начать создавать свои собственные приложения. Но прежде чем мы это сделаем, мы пройдемся по некоторым распространенным компонентам Android в этом учебном пособии, а затем кратко рассмотрим примеры SDK в следующем учебном пособии.
Вступление
Существует четыре основных компонента Android-приложений: activities
, services
, content providers
и broadcast receivers
. Всякий раз, когда вы создаете или используете какой-либо из них, вы должны включить элементы в манифест проекта. Мы уже встречались с Activities
поэтому я не буду больше тратить на них время, но рассмотрю остальные три основных компонента приложения. Я также упомяну несколько ресурсов, которые ваши приложения, скорее всего, будут использовать, включая fragments
и action bar
.
1. Услуги
service
в Android — это фоновый процесс. Services
обычно используются для процессов, которые продолжаются или занимают значительный период времени. service
не имеет пользовательского интерфейса, поэтому его часто объединяют с другими компонентами, такими как activities
. Типичным примером является приложение, в котором действие запускает службу, выполняемую при взаимодействии с пользователем, при этом служба, возможно, загружает данные в веб-ресурс. Пользователь может продолжать взаимодействовать с активностью во время работы службы, поскольку она выполняется в фоновом режиме.
AsyncTask
внутри вашей деятельности. Это убирает фоновую обработку из пользовательского интерфейса, но ваша деятельность может получить результаты операции AsyncTask для обновления пользовательского интерфейса. Чтобы добавить компонент service
в манифест, используйте следующий синтаксис с элементом, размещенным внутри элемента приложения:
1
|
<service android:name=».ServiceClassName» />
|
Вы можете создать класс обслуживания в Eclipse, используя тот же процесс, что и для действия, выбрав service
в качестве суперкласса. Услуги отличаются от компонентов деятельности, которые мы рассматривали ранее, несколькими важными способами. Если вы запускаете службу, которая запускается из действия, и пользователь переходит от действия к другому приложению, служба продолжит работу. Следовательно, жизненный цикл службы отличается от жизненного цикла, который мы исследовали для своей деятельности. Вы должны иметь это в виду, чтобы ваши приложения были эффективными.
Другие компоненты приложения могут привязываться к сервисам, запрашивая и получая от них данные. Если связанная служба запущена, она останавливается, когда все компоненты, связанные с ней, останавливаются. Хотя служба отделена от пользовательского интерфейса приложения, служба, запущенная в действии, будет работать в том же потоке, что и она. Однако, если ваша служба будет использовать значительный объем ресурсов обработки, вы можете создать отдельный поток для ее запуска. Подробнее об услугах см. Руководство разработчика Android .
2. Поставщики контента
Поставщик контента — это компонент для управления набором данных. Этот набор данных может быть закрытым для вашего приложения или может использоваться совместно с другими приложениями, способными запрашивать и изменять данные. Если вы создаете поставщика контента для управления данными для своего собственного приложения, ваши компоненты пользовательского интерфейса, такие как действия, будут использовать поставщика контента, обычно через класс преобразователя контента, для взаимодействия с данными. При использовании другими приложениями поставщик контента управляет доступом к данным с помощью стандартных методов взаимодействия со структурированными наборами данных, такими как базы данных.
Если вы вообще знакомы с реляционными базами данных, вы интуитивно понимаете методы, используемые для доступа к данным с поставщиком контента. Поставщик контента представляет данные в виде набора таблиц со строками и столбцами, и каждый столбец в строке (или записи) содержит одно значение данных. Поэтому обработка данных, возвращаемых через поставщика контента, аналогична обработке результатов запросов к базе данных.
Хотя вы, конечно, можете в какой-то момент создать приложение поставщика контента, в ваших первоначальных приложениях у вас гораздо больше шансов получить доступ к приложению, созданному другим разработчиком или самой системой Android, например календарем устройства или контактами. Поставщики контента могут определять разрешения, которые должны иметь клиентские приложения для их использования. Чтобы использовать поставщика контента в своем приложении, вам необходимо добавить соответствующие разрешения для него в манифест.
См. Раздел « Поставщики контента » в Руководстве разработчика Android для получения дополнительной информации.
3. Вещательные приемники
Система Android делает различные типы трансляций, на которые может реагировать приложение. Вы также можете разрабатывать приложения для таких трансляций, но это гораздо реже, чем прослушивание существующих трансляций, по крайней мере, для ваших первых приложений. Системные сообщения включают информацию об оборудовании устройства, таком как уровень заряда батареи, отключение экрана, зарядное устройство, подключенное к розетке и т. Д.
Чтобы получать широковещательные объявления на Android, ваши приложения могут использовать broadcast receiver
. Типичным примером этого является виджет уровня заряда батареи, в котором вы хотите обновить отображение при изменении уровня заряда батареи. В этом случае вы можете использовать класс service
в сочетании с приемником широковещания, чтобы приложение продолжало прослушивать объявления в фоновом режиме.
Система Android моделирует трансляции объявлений как intents
, которые можно использовать для начала activity
. Намерение — это действие, которое выполняет система, например, запуск действия или объявление. Чтобы использовать широковещательный приемник, ваши приложения должны объявить его в манифесте вместе с необязательным intent filter
, указав действия, которые вы хотите получить:
1
2
3
4
5
|
<receiver android:name=».YourReceiver»>
<intent-filter>
<action android:name=»android.intent.action.BATTERY_LOW» />
</intent-filter>
</receiver>
|
Это относится к широковещательному приемнику, в котором ваше приложение может получить низкий заряд батареи . Обратите внимание, что вы не можете получать все системные объявления, объявляя их действия в манифесте таким образом. В некоторых случаях вам необходимо зарегистрироваться, чтобы получать их на Java, например, с помощью действия BATTERY_CHANGED . Посмотрите класс приемника вещания для больше на этом типе приложения.
4. Другие классы
Как мы уже видели, компоненты Android предназначены для обеспечения взаимодействия между приложениями. Так же, как широковещательные объявления доступны для любого приложения в системе, Android предоставляет определенные действия, которые вы можете использовать для выполнения общих задач в своих приложениях, например, набор номера. Точно так же вы часто можете использовать функциональность, предоставляемую другими разработчиками, для выполнения обработки, экономя на объеме кода, который вы должны реализовать самостоятельно, и позволяя вам сосредоточиться на уникальных аспектах ваших приложений. Когда вы запускаете одно намерение из другого, вы можете настроить его так, чтобы он возвращал результат в действие запуска, даже если запущенное намерение не является частью вашего приложения. Это позволяет вашему приложению продолжать функционировать после выполнения запрошенного действия.
Другие компоненты Android, о которых вы должны знать, включают fragment
и action bar
. Позвольте мне кратко пробежаться по ним:
Фрагменты
Вместо того, чтобы просто использовать действие и макет для определения всего пользовательского интерфейса для каждого экрана приложения, часто более эффективно использовать fragments
. С помощью фрагментов вы можете разделить части вашего пользовательского интерфейса на логические разделы и даже повторно использовать эти разделы на нескольких экранах вашего приложения. Это избавляет вас от задачи по внедрению одних и тех же визуальных / интерактивных элементов более одного раза и дает вам одну точку изменений для этих разделов. Фрагменты смоделированы как часть действия, поэтому фрагмент привязан к жизненному циклу действия, в котором он находится. Для получения дополнительной информации см. Раздел фрагментов Руководства разработчика .
Панель действий
Панель действий — еще один ключевой элемент пользовательского интерфейса, который может оказаться полезным. Панель действий дает вашему приложению компонент пользовательского интерфейса, который является единым для всей системы Android, что делает его интуитивно понятным для пользователей платформы. Типичные элементы, отображаемые на панели действий, включают индикатор местоположения пользователя в вашем приложении, если это необходимо, и ярлыки для общих действий, включая навигацию между частями приложения. Чтобы использовать панель действий в действии, убедитесь, что ваш класс расширяет класс ActionBarActivity
и примените тему AppCompat
к действию в манифесте. См. Руководство разработчика для получения дополнительной информации о панели действий.
Вывод
Какие классы и компоненты Android вы используете, естественно, зависит от того, что делает ваше приложение. Тем не менее, вышеупомянутые компоненты дают вам представление о том, какие классы и компоненты вы можете выбрать. Часто бывает трудно решить, какой компонент или класс использовать для определенной функции или функции, поэтому убедитесь, что вы понимаете назначение каждого из них, прежде чем принять решение. В следующих нескольких уроках мы рассмотрим примеры Android и процесс публикации приложений.