Документация
ОС Аврора 5.1.5

Фоновые задачи

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

Фоновые задачи делятся на следующие типы:

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

API для работы с фоновыми задачами является частью libruntime-manager. Используемый класс — это класс Tasks.

Содержание:

Среда приложения

Следующие переменные среды установлены менеджером и доступны для фоновых задач:

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

Создание фоновых задач и управление ими

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

Также, независимо от значения в desktop-файле, нельзя получить доступ к камере и микрофону для фоновых задач.

Пример desktop-файла:

[X-Task <TASK_ID>]
Type=[periodic|worker|location|push|<more-domain-specific-events>]


# Строка Exec может быть опущена, и в этом случае будет
# выполнен тот же исполняемый файл, что и для приложения.
Exec=/usr/bin/runner

# Строка разрешений может быть опущена, в этом случае задача будет
# иметь только базовый профиль.
Permissions=Internet;...

# Условия=<условие1>;<условие2>;<условие3>
# Двоеточие может использоваться для указания дополнительного условия, например "Интернет: Wi-Fi"
Conditions=idle

...параметры, зависящие от типа...

Реализовать фоновую задачу можно:

  • в отдельном исполняемом файле;
  • в исполняемом файле приложения.

Периодические задачи

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

Параметры передаются во время выполнения приложения. В desktop-файле их задать нельзя.

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

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

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

Примечание:

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

Условия выполнения фоновых задач

В desktop-файл может быть добавлена строка "Conditions", задающая условия фоновых задач. Список поддерживаемых условий:

  • internet: значение истинно, если доступно подключение к Интернету; Доступны следующие дополнительные условия:

    • Wi-Fi: подключение осуществляется через сеть Wi-Fi;
    • ethernet: подключение осуществляется через адаптер ethernet;
    • cellular: подключение осуществляется через сотовую сеть.
  • idle: истинно, когда устройство находится в режиме ожидания;

  • charging: истинно, когда устройство заряжается;

  • battery-not-low: батарея не разряжена.

Ограничения времени выполнения

Существует два ограничения на время работы фоновых задач:

  • для задач типа "worker", "periodic" и "scheduled" на каждый запуск: задача не может длиться больше 15 минут;
  • для задач типа "periodic" и "scheduled" существует дополнительное ограничение на интервал запуска: задачи не могут запускаться чаще 15 минут.

Обработка событий

Для каждой фоновой задачи существует возможность задать в desktop-файле обрабатываемое событие. Если соответствующее событие не указано в desktop-файле, то фоновая задача не будет создана.

Фоновые задачи могут обрабатывать следующие события:

Взаимодействие с приложениями

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

Методы IPC

Существуют средства IPC для взаимодействия других процессов приложения и фоновых задач:

  • общая файловая система;
  • разделяемая память;
  • обмен сообщениями;
  • синхронизация.
  • API для взаимодействия.

Схемы URI

URI-схемы для взаимодействия фоновой задачи с приложением в ОС Аврора позволяют установить связь между приложением и фоновым процессом, чтобы обеспечивать взаимодействие и обмен данными между ними. Нет никаких ограничений на то, какие URI могут быть отправлены в уведомлении, при условии, что  их размер не превышает 2048 байт. URI будет перенаправлен целевому приложению без каких-либо изменений.

Приложения, желающие обрабатывать уведомления, с другой стороны, могут зарегистрироваться в качестве обработчиков только для схем URI, начинающиеся с aurora-<org_name>.. Это позволяет приложениям определять свою собственную схему, гарантируя при этом отсутствие конфликтов с другими приложениями.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.