Сеилханова Р. Б



бет15/112
Дата07.01.2022
өлшемі11,65 Mb.
#17516
түріПрограмма дисциплины
1   ...   11   12   13   14   15   16   17   18   ...   112
Байланысты:
Силлабус Android krmu 20

Приостановлена. Активность частично видима, однако фокус ввода потерян. В это состояние активность попадает после вызова метода onPause() ( рис. 3.4). В этом состоянии активность поддерживается в "боевой готовности", т.е. в любой момент может получить фокус ввода и стать активной. Однако в этом состоянии процесс активности может быть уничтожен системой, в случае экстремальной нехватки памяти.

  • Остановлена. Активность полностью невидима. В это состояние активность попадает после вызова метода onStop()( рис. 3.4). В этом состоянии активность может быть "вызвана к жизни", она сохраняет все состояния и необходимую для восстановления информацию, однако процесс активности может быть уничтожен, если память понадобится для других целей.

    1. Сервисы (Services)

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

    • первый заключается в том, что сервис запущен (started) и работает самостоятельно в фоновом режиме, так он может работать неопределенно долго, пока не выполнит свою задачу;

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

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

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

    onCre

    ate()

    - метод, вызываемый системой, при первом обращении к сервису для выполнения первоначальных настроек. Этот метод вызывается до вызова методов onStartCommand() и/или onBind().

    onDes

    troy()

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

    освобождение всех ресурсов, таких как потоки,

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



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

    Подробнее о создании, использовании и удалении сервисов:

    http://developer.android.com/guide/components/services.html;

    http://developer.android.com/guide/components/processes-and-threads.html.



    1. Контент-провайдеры (Content Providers)

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

    В мобильных приложениях контент-провайдеры необходимы в следующих случаях:



    • приложение предоставляет сложные данные или файлы другим приложениям;

    • приложение позволяет пользователям копировать сложные данные в другие приложения;

    • приложение предоставляет специальные варианты поиска, используя поисковую платформу (framework).

    Если приложение требует использования контент-провайдера, необходимо выполнить несколько этапов для создания этого компонента:

    1. Проектирование способа хранения данных. Данные, с которыми работают контент-провайдеры, могут быть организованы двумя способами:



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

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



    1. Приемники широковещательных сообщений (Broadcast Receivers)

    Каждый широковещательный приемник является наследником класса BroadcastReceiver. Этот класс рассчитан на получение объектов- намерений отправленных методом sendBroadcast().

    Можно выделить две разновидности широковещательных сообщений:



    • Нормальные широковещательные сообщения передаются с помощью Context.sendBroadcast в асинхронном режиме. Все приемники срабатывают в неопределенном порядке, часто в одно и то же время.

    • Направленные широковещательные сообщения передаются с помощью Context.sendOrderedBroadcast только одному приемнику в один момент времени. Как только приемник сработает, он может передать сообщение следующему приемнику, а может прервать вещание так, что больше ни один приемник это сообщение не получит.

    2.5 Манифест приложения



    Достарыңызбен бөлісу:
  • 1   ...   11   12   13   14   15   16   17   18   ...   112




    ©emirsaba.org 2024
    әкімшілігінің қараңыз

        Басты бет