Основные компоненты Android
Инфраструктура пользовательского интерфейса Android, как и многие другие части Android, основана на новой концепции под названием намерение (intent) или цель. Намерение — это внутрипроцессный и межпроцессный механизм для вызова компонентов в Android.
Компонент в Android — это порция кода, которая имеет строго определенный жизненный цикл. Активность, представляющая окно в Android-приложении, является компонентом. Аналогично, служба, которая выполняется внутри процесса Android и обслуживает других клиентов, также является компонентом. Приемник, пробуждающийся в ответ на некоторое событие — это еще один пример компонента в Android.
Хотя намерение в первую очередь предназначено для вызова компонентов, оно обладает характеристиками, которые соответствуют оконным сообщениям, действиям, моделям публикации и подписки, а также взаимодействиям между процессами. Ниже показан пример использования класса Intent для вызова или запуска веб-браузера:
public static void invokeWebBrowser(Activity activity)
{
Intent intent = new Intent(Intent.ACTION VIEW);
intent.setData(Uri.parse("www.google.com"));
activity.startActivity(intent);
}
В этом примере с помощью намерения выполняется запрос к Android на запуск подходящего окна для отображения содержимого веб-сайта. Для этого Android выбирает один из браузеров, установленных на устройстве. Намерения более подробно рассматриваются в главе 5.
В Android имеется интенсивная поддержка ресурсов (resource), которые включают такие сущности, как строки и битовые изображения, а также ряд не особенно знакомых элементов вроде XML-определения представлений (компоновок, похожих на HTML). Инфраструктура Android использует эти ресурсы новым способом, что делает их применение легким, интуитивно понятным и удобным. Вот пример автоматической генерации идентификаторов для ресурсов, определенных в XML-файлах:
public final class R {
// Все строковые ресурсы будут иметь автоматически сгенерированные константы public static final class string {
public static final int hello=0x7f070000;
}
// Все файлы изображений будут иметь уникальные // сгенерированные идентификаторы public static final class drawable {
public static final int myanimation=0x7f020001; public static final int numbers19=0x7f02000e;
}
// Идентификаторы представлений автоматически генерируются на основе их имен public static final class id {
public static final int textViewId1=0x7f080003;
}
// Следующие два файла (подобные html) определяют компоновку, автоматически // сгенерированную из имен файлов в соответствующих подкаталогах. public static final class layout {
public static final int frame animations layout=0x7f030001; public static final int main=0x7f030002;
}
}
Каждый автоматически сгенерированный идентификатор в этом классе соответствует либо какому-то элементу в XML-файле, либо всему файлу. Когда понадобится использовать эти XML-определения, вместо них можно задействовать сгенерированные подобным образом идентификаторы. Такое косвенное обращение очень помогает для специализации ресурсов на основе локали, размеров устройства и т.д. (Файл R.java и ресурсы более подробно описаны в главе 3.)
Еще одной новой концепцией в Android является поставщик контента (content provider). Это абстракция источника данных, которая делает его подобным источником и потребителем служб, оснащенных REST (Representational State Transfer — передача состояния представления). Лежащая в основе база данных SQLite делает поставщики контента мощным средством для разработчиков приложений. Поставщики контента рассматриваются в главе 4. В главах 3, 4 и 5 будет показано, каким образом намерения, ресурсы и поставщики контента обеспечивают открытость платформы Android.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.