- Главная
- Информатика
- Приложения под Андроид
Содержание
- 2. Основы создания приложений Приложения для Android пишутся на языке программирования Java. Инструменты Android SDK (Software Development
- 3. Операционная система Android Операционная система Android представляет собой многопользовательскую систему Linux, в которой каждое приложение является
- 4. Принцип предоставления минимальных прав Android реализует принцип предоставления минимальных прав. То есть каждое приложение по умолчанию
- 5. Компоненты приложения Каждый компонент представляет собой отдельную точку, через которую система может войти в приложение. Не
- 6. Операции (активности) Операция (Activity) представляет собой один экран с пользовательским интерфейсом. Например, в приложении для работы
- 7. Службы Служба (Service) представляет собой компонент, который работает в фоновом режиме и выполняет длительные операции, связанные
- 8. Поставщики контента Поставщик контента (Content provider) управляет общим набором данных приложения. Данные можно хранить в файловой
- 9. Приемники широковещательных сообщений Приемник широковещательных сообщений (Broadcast receiver) представляет собой компонент, который реагирует на объявления распространяемые
- 10. Запуск компонентов другого приложения Уникальной особенностью системы Android является то, что любое приложение может запустить компонент
- 11. Активация компонентов Компоненты трех из четырех возможных типов — операции, службы и приемники широковещательных сообщений —
- 12. Примеры использования Intent Объект Intent может передавать запрос на выполнение операции "показать изображение" или "открыть веб-страницу".
- 13. Активация поставщиков контента Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются. Они активируются
- 14. Для активации компонентов каждого типа имеются отдельные методы: Можно запустить операцию (или определить для нее какое-то
- 15. Файл манифеста Для запуска компонента приложения системе Android необходимо знать, что компонент существует. Для этого она
- 16. Объявление компонентов в файле манифеста Основная задача манифеста – это информировать систему о компонентах приложения. Например,
- 17. Все компоненты приложения необходимо объявлять следующим образом: элементы для операций; элементы для служб; элементы для приемников
- 18. Объявление возможностей компонентов С помощью объекта Intent можно запускать операции, службы и приемники широковещательных сообщений. Для
- 19. Фильтры объектов Intent Система определяет компоненты, которые могут ответить на сообщение Intent, путем сравнения полученного сообщения
- 20. Пример фильтра для ответа на сообщение Intent Если вы создали приложение для работы с электронной почтой
- 21. Объявление требований приложения Если вашему приложению требуется камера и оно использует API-интерфейсы из Android 2.1 (уровень
- 22. Ресурсы приложения Приложение Android состоит не только из кода — ему необходимы такие существующие отдельно от
- 23. Предоставление ресурсов Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного кода заключается в возможности
- 26. Скачать презентацию
Слайд 2Основы создания приложений
Приложения для Android пишутся на языке программирования Java.
Инструменты Android
Основы создания приложений
Приложения для Android пишутся на языке программирования Java.
Инструменты Android
![Основы создания приложений Приложения для Android пишутся на языке программирования Java. Инструменты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-1.jpg)
В файле APK находится все, что требуется для работы Android-приложения, и он позволяет установить приложение на любом устройстве под управлением системы Android.
Каждое приложение Android, установленное на устройстве, работает в собственной "песочнице" (изолированной программной среде):
Слайд 3Операционная система Android
Операционная система Android представляет собой многопользовательскую систему Linux, в которой
Операционная система Android
Операционная система Android представляет собой многопользовательскую систему Linux, в которой
![Операционная система Android Операционная система Android представляет собой многопользовательскую систему Linux, в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-2.jpg)
по умолчанию система назначает каждому приложению уникальный идентификатор пользователя Linux (этот идентификатор используется только системой и неизвестен приложению);
система устанавливает полномочия для всех файлов в приложении, с тем чтобы доступ к ним был разрешен только пользователю с идентификатором, назначенным этому приложению;
у каждого процесса имеется собственная виртуальная машина (ВМ), так что код приложения выполняется изолированно от других приложений;
по умолчанию каждое приложение выполняется в собственном процессе Linux.
Android запускает процесс, когда требуется выполнить какой-либо компонент приложения, а затем завершает процесс, когда он больше не нужен либо когда системе требуется освободить память для других приложений.
Слайд 4Принцип предоставления минимальных прав
Android реализует принцип предоставления минимальных прав.
То есть каждое приложение
Принцип предоставления минимальных прав
Android реализует принцип предоставления минимальных прав.
То есть каждое приложение
![Принцип предоставления минимальных прав Android реализует принцип предоставления минимальных прав. То есть](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-3.jpg)
Однако у приложения есть варианты предоставления своих данных другим приложениям и доступа к системным службам:
двум приложениям можно назначить один идентификатор пользователя Linux. В этом случае каждый из них сможет обращаться к файлам другого приложения. Для экономии ресурсов системы также можно сделать так, чтобы приложения с одинаковым идентификатором пользователя выполнялись в одном процессе Linux и использовали одну ВМ ( приложения также должны быть подписаны одним сертификатом);
приложение может запросить разрешение на доступ к данным устройства, например к контактам пользователя, SMS-сообщениям, подключаемой карте памяти (SD-карте), камере, Bluetooth и др. Все разрешения должны предоставляться приложению при его установке.
Слайд 5Компоненты приложения
Каждый компонент представляет собой отдельную точку, через которую система может войти
Компоненты приложения
Каждый компонент представляет собой отдельную точку, через которую система может войти
![Компоненты приложения Каждый компонент представляет собой отдельную точку, через которую система может](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-4.jpg)
Не все компоненты являются точками входа для пользователя, а некоторые из них зависят друг от друга.
При этом каждый компонент является самостоятельной структурной единицей и играет определенную роль — каждый из них представляет собой уникальный элемент структуры, который определяет работу приложения в целом.
Компоненты приложения можно отнести к одному из четырех типов. (Activity, Service, Content provider, Broadcast receiver)
Компоненты каждого типа предназначены для определенной цели, они имеют собственный жизненный цикл, который определяет способ создания и прекращения существования компонента.
Слайд 6Операции (активности)
Операция (Activity) представляет собой один экран с пользовательским интерфейсом.
Например, в приложении для
Операции (активности)
Операция (Activity) представляет собой один экран с пользовательским интерфейсом.
Например, в приложении для
![Операции (активности) Операция (Activity) представляет собой один экран с пользовательским интерфейсом. Например,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-5.jpg)
Любые из этих операций могут быть запущены другим приложением (если это позволяет приложение по работе с электронной почтой). Например, приложение для камеры может запустить операцию в приложении по работе с электронной почтой, которая составляет новое сообщение, чтобы пользователь мог отослать фотографию.
Операция относится к подклассу класса Activity.
Слайд 7Службы
Служба (Service) представляет собой компонент, который работает в фоновом режиме и выполняет длительные операции,
Службы
Служба (Service) представляет собой компонент, который работает в фоновом режиме и выполняет длительные операции,
![Службы Служба (Service) представляет собой компонент, который работает в фоновом режиме и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-6.jpg)
Служба не имеет пользовательского интерфейса. Например, она может воспроизводить музыку в фоновом режиме, пока пользователь работает в другом приложении, или же она может получать данные по сети, не блокируя взаимодействие пользователя с операцией.
Служба может быть запущена другим компонентом, который затем будут взаимодействовать с ней, – например операцией.
Служба относится к подклассу класса Service.
Слайд 8Поставщики контента
Поставщик контента (Content provider) управляет общим набором данных приложения. Данные можно хранить в
Поставщики контента
Поставщик контента (Content provider) управляет общим набором данных приложения. Данные можно хранить в
![Поставщики контента Поставщик контента (Content provider) управляет общим набором данных приложения. Данные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-7.jpg)
В Android есть поставщик контента, который управляет информацией контактов пользователя. Любое приложение, получившее соответствующие разрешения, может запросить часть этого поставщика контента (например ContactsContract.Data), для чтения и записи сведений об определенном человеке.
Поставщики контента также используются для чтения и записи данных, доступ к которым внешним компонентам приложение не предоставляет. Например, в образце приложения Note Pad с помощью поставщика контента выполняется сохранение заметок.
Поставщик контента относится к подклассу класса ContentProvider. Он должен реализовывать стандартный набор API-интерфейсов, с помощью которых другие приложения будут выполнять транзакции.
Слайд 9Приемники широковещательных сообщений
Приемник широковещательных сообщений (Broadcast receiver) представляет собой компонент, который реагирует на объявления
Приемники широковещательных сообщений
Приемник широковещательных сообщений (Broadcast receiver) представляет собой компонент, который реагирует на объявления
![Приемники широковещательных сообщений Приемник широковещательных сообщений (Broadcast receiver) представляет собой компонент, который](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-8.jpg)
Многие из этих объявлений рассылает система — например объявление о том, что экран выключился, аккумулятор разряжен или был сделан фотоснимок.
Объявления также могут рассылаться приложениями, — например, чтобы сообщить другим приложениям о том, что какие-то данные были загружены на устройство и теперь готовы для использования.
Несмотря на то что приемники широковещательных сообщений не имеют пользовательского интерфейса, они могут создавать уведомления в строке состояния, чтобы предупредить пользователя о событии "рассылка объявления".
Однако чаще всего они являются просто "шлюзом" для других компонентов и предназначены для выполнения минимального объема работы.
Приемник широковещательных сообщений относится к подклассу класса BroadcastReceiver , а каждое такое сообщение предоставляется как объект Intent
Слайд 10Запуск компонентов другого приложения
Уникальной особенностью системы Android является то, что любое приложение
Запуск компонентов другого приложения
Уникальной особенностью системы Android является то, что любое приложение
![Запуск компонентов другого приложения Уникальной особенностью системы Android является то, что любое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-9.jpg)
Когда система запускает компонент, она запускает процесс для этого приложения (если он еще не был запущен) и создает экземпляры классов, которые требуются этому компоненту
В отличие от приложений для большинства других систем, в приложениях для Android отсутствует единая точка входа (например, в них нет функции main()).
Поскольку система выполняет каждое приложение в отдельном процессе с такими правами доступа к файлам, которые ограничивают доступ в другие приложения, ваше приложение не может напрямую вызвать компонент из другого приложения. Это может сделать сама система Android.
Поэтому, чтобы вызвать компонент в другом приложении, необходимо сообщить системе о своем намерении (Intent) запустить определенный компонент. После этого система активирует для вас этот компонент.
Слайд 11Активация компонентов
Компоненты трех из четырех возможных типов — операции, службы и приемники
Активация компонентов
Компоненты трех из четырех возможных типов — операции, службы и приемники
![Активация компонентов Компоненты трех из четырех возможных типов — операции, службы и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-10.jpg)
Объекты Intent связывают друг с другом отдельные компоненты во время выполнения, будь то это компоненты вашего или стороннего приложения (эти объекты Intent можно представить себе в виде мессенджеров, которые посылают другим компонентам запрос на выполнение действий).
Объект Intent создается с помощью объекта Intent, который описывает запрос на активацию либо конкретного компонента, либо компонента конкретного типа — соответственно, намерение Intent может быть явным или неявным.
Для операций и служб Объект Intent определяет действие, которое требуется выполнить (например, просмотреть (view) или отправить (send) что-то), а также может указывать URI (Uniform Resource Identifier – унифицированный идентификатор ресурса) данных, с которыми это действие нужно выполнить (помимо прочих сведений, которые нужно знать запускаемому компоненту).
Слайд 12Примеры использования Intent
Объект Intent может передавать запрос на выполнение операции "показать изображение"
Примеры использования Intent
Объект Intent может передавать запрос на выполнение операции "показать изображение"
![Примеры использования Intent Объект Intent может передавать запрос на выполнение операции "показать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-11.jpg)
В некоторых ситуациях операцию можно запустить, чтобы получить результат. В этом случае операция возвращает результат также в виде объекта Intent (например, можно отправить сообщение Intent, чтобы дать пользователю возможность выбрать контакт и вернуть его вам — в ответном сообщении Intent будет содержаться URI, указывающий на выбранный контакт).
Для приемников широковещательных сообщений Intent просто определяет передаваемое объявление (например, широковещательное сообщение о низком уровне заряда аккумулятора содержит только строку "аккумулятор разряжен").
Слайд 13Активация поставщиков контента
Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются.
Они
Активация поставщиков контента
Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются.
Они
![Активация поставщиков контента Компоненты четвертого типа – поставщики контента – сообщениями Intent](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-12.jpg)
Вместо этого он вызывает методы для объекта ContentResolver. Это формирует слой, абстрагирующий (в целях безопасности) поставщика контента от компонента, запрашивающего информацию
Слайд 14Для активации компонентов каждого типа имеются отдельные методы:
Можно запустить операцию (или определить
Для активации компонентов каждого типа имеются отдельные методы:
Можно запустить операцию (или определить
![Для активации компонентов каждого типа имеются отдельные методы: Можно запустить операцию (или](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-13.jpg)
Можно запустить службу (либо выдать работающей службе новые инструкции), передав объект Intent методу startService(). Либо можно установить привязку к службе, передав объектIntent методу bindService().
Можно инициировать рассылку сообщений, передав объект Intent таким методам, как sendBroadcast(), sendOrderedBroadcast() и sendStickyBroadcast().
Можно выполнить запрос к поставщику контента, вызвав метод query() для объекта ContentResolver.
Слайд 15Файл манифеста
Для запуска компонента приложения системе Android необходимо знать, что компонент существует.
Файл манифеста
Для запуска компонента приложения системе Android необходимо знать, что компонент существует.
![Файл манифеста Для запуска компонента приложения системе Android необходимо знать, что компонент](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-14.jpg)
Помимо объявления компонентов приложения, манифест служит и для других целей, среди которых:
указание всех полномочий пользователя, которые требуются приложению, например разрешения на доступ в Интернет или на чтение контактов пользователя;
объявление минимального уровня API, требуемого приложению, с учетом того, какие API-интерфейсы оно использует;
объявление аппаратных и программных функций, которые нужны приложению или используются им, например камеры, службы Bluetooth или сенсорного экрана;
указание библиотек API, с которыми необходимо связать приложение (отличные от API-интерфейсов платформы Android), например библиотеки Google Maps ;
и многое другое.
Слайд 16Объявление компонентов в файле манифеста
Основная задача манифеста – это информировать систему о
Объявление компонентов в файле манифеста
Основная задача манифеста – это информировать систему о
![Объявление компонентов в файле манифеста Основная задача манифеста – это информировать систему](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-15.jpg)
Например, файл манифеста может объявлять операцию следующим образом:
Атрибут android:icon в элементе
Атрибут android:name в элементе
Слайд 17Все компоненты приложения необходимо объявлять следующим образом:
элементы для операций;
элементы для служб;
элементы для приемников широковещательных сообщений;
элементы для
Все компоненты приложения необходимо объявлять следующим образом:
элементы
элементы
элементы
элементы
![Все компоненты приложения необходимо объявлять следующим образом: элементы для операций; элементы для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-16.jpg)
Системе не видны операции, службы и поставщики контента, которые имеются в исходном коде, но не объявлены в манифесте, поэтому они не могут быть запущены.
Приемники широковещательных сообщений можно либо объявить в манифесте, либо создать динамически в коде (как объекты BroadcastReceiver) и зарегистрировать в системе путем вызова registerReceiver().
Слайд 18Объявление возможностей компонентов
С помощью объекта Intent можно запускать операции, службы и приемники широковещательных сообщений.
Объявление возможностей компонентов
С помощью объекта Intent можно запускать операции, службы и приемники широковещательных сообщений.
![Объявление возможностей компонентов С помощью объекта Intent можно запускать операции, службы и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-17.jpg)
Для этого в объекте Intent следует явно указать имя целевого компонента (с помощью имени класса компонента).
Однако в полной мере возможности объектов Intent раскрываются при использовании концепции неявных Intent.
В неявном сообщении Intent просто описывается тип действия, которое требуется выполнить (а также, хотя это и не обязательно, данные, в отношении которых вы бы хотели выполнить это действие).
Системе же предоставляется возможности найти на устройстве компонент, который может выполнить это действие, и запустить его.
При наличии нескольких компонентов, которые могут выполнить действие, описанное в сообщении Intent, пользователь выбирает, какой из них будет использоваться.
Слайд 19Фильтры объектов Intent
Система определяет компоненты, которые могут ответить на сообщение Intent, путем
Фильтры объектов Intent
Система определяет компоненты, которые могут ответить на сообщение Intent, путем
![Фильтры объектов Intent Система определяет компоненты, которые могут ответить на сообщение Intent,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-18.jpg)
При объявлении операции в манифесте своего приложения по желанию можно указать фильтры объектов Intent, которые указывают возможности операции, с тем чтобы она могла реагировать на сообщения Intent от других приложений.
Чтобы объявить фильтр Intent для своего компонента, необходимо добавить элемент
Слайд 20Пример фильтра для ответа на сообщение Intent
Если вы создали приложение для работы
Пример фильтра для ответа на сообщение Intent
Если вы создали приложение для работы
![Пример фильтра для ответа на сообщение Intent Если вы создали приложение для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-19.jpg)
Затем, если другое приложение создаст объект Intent с действием ACTION_SEND и передаст его в startActivity(), система сможет запустить вашу операцию, дав пользователю возможность написать и отправить сообщение электронной почты.
Слайд 21Объявление требований приложения
Если вашему приложению требуется камера и оно использует API-интерфейсы из
Объявление требований приложения
Если вашему приложению требуется камера и оно использует API-интерфейсы из
![Объявление требований приложения Если вашему приложению требуется камера и оно использует API-интерфейсы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-20.jpg)
Теперь ваше приложение нельзя будет установить из Google Play на устройствах, в которых нет камеры, а также на устройствах, работающих под управлением Android версии ниже 2.1.
Однако можно также объявить, что приложение использует камеру, но для его работы она не является непременно необходимой. В этом случае в приложении атрибуту required необходимо задать значение "false", а во время работы оно должно проверять, имеется ли на устройстве камера, и при необходимости отключать свои функции, которые используют камеру.
Слайд 22Ресурсы приложения
Приложение Android состоит не только из кода — ему необходимы такие
Ресурсы приложения
Приложение Android состоит не только из кода — ему необходимы такие
![Ресурсы приложения Приложение Android состоит не только из кода — ему необходимы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-21.jpg)
Для каждого ресурса, включаемого в проект Android, инструменты SDK задают уникальный целочисленный идентификатор, который может использоваться, чтобы сослаться на ресурс из кода приложения или из других ресурсов, определенных в XML.
Например, если в вашем приложении имеется файл изображения с именем logo.png (сохраненный в папке res/drawable/), инструменты SDK сформируют идентификатор ресурса под именем R.drawable.logo, с помощью которого на изображение можно будет ссылаться и вставлять его в пользовательский интерфейс.
Слайд 23Предоставление ресурсов
Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного кода
Предоставление ресурсов
Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного кода
![Предоставление ресурсов Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/921797/slide-22.jpg)
Например, определив строки пользовательского интерфейса в XML, вы сможете перевести их на другие языки и сохранить эти переводы в отдельных файлах.
Затем по квалификатору языка , добавленному к имени каталога ресурса (res/values-fr/ для строк на французском языке), и выбранному пользователем языку система Android применит к вашему пользовательскому интерфейсу строки на соответствующем языке.
Android поддерживает разные квалификаторы для соответствующих ресурсов.
Квалификатор представляет собой короткую строку, которая включается в имена каталогов ресурсов с целью определения конфигурации устройства, для которой эти ресурсы следует использовать.
В качестве другого примера можно сказать, что для операций следует создавать разные макеты, которые будут соответствовать размеру и ориентации экрана устройства.
Чтобы при изменении ориентации экрана изменялся макет, можно определить два разных макета и применить соответствующий квалификатор к имени каталога каждого макета.
После этого система будет автоматически применять соответствующий макет в зависимости от ориентации устройства.