фоновые задачи - PullRequest
       49

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

0 голосов
/ 23 декабря 2018

Недавно я читал о том, как выполняются фоновые задания в Android (с использованием Service, AlarmManager, JobScheduler и т. Д.), И узнал, что эти фоновые задачи могут выполняться бесконечно, даже если приложение уже закрыто или устройство отключено.Я понимаю, что только они останавливаются, если они останавливают себя или другие компоненты, останавливают их.

Вопросы:

  1. Если у меня есть фоновая работа или сигнал тревоги, который срабатывает каждые 1 час.Это действительно работает вечно, пока компонент не остановит их?Есть ли такой случай, когда система остановит их?

  2. Что если у меня будет периодическая работа или сигнал тревоги, который срабатывает каждые 1 час.Остановятся ли они, если я удалю приложение, которое их запустило?Потому что я никогда не читал эту часть в какой-либо документации.

  3. Можно ли проверить какие-либо текущие или ожидающие фоновые задания / сигналы тревоги на моем устройстве?

1 Ответ

0 голосов
/ 23 декабря 2018

Объяснение, которое дается о фоновых задачах в вашем вопросе, относится только к фоновым службам, то есть только к уровням API Android ниже 26.

Google рекомендует использовать JobScheduler или Foreground Service для выполнения некоторой работы даже в фоновом режиме.когда приложение не на переднем плане.

Приходящие к вам вопросы

  1. Нет, если вы используете JobScheduler или Alarm Manager, система будет запускать вашу работу, чтобы выполнять вашу работу в зависимости отупомянутые вами бездействие устройства и условия, но система может в любое время прийти и остановить вашу работу в промежутке, когда условия больше не выполняются.

    Если вы используете JobScheduler, он сообщит вам, когда система хочет принудительно остановить систему, чтобы вы могли правильно с ней справиться и перенести ее в случае необходимости

  2. Когда приложение удаляется из каждой работы илибудильник, который запланирован или находится в процессе, будет уничтожен.
  3. Да, JobScheduler предоставляет функцию 'getAllPendingJobs'

Примечание:

  • Для работ, которые должны быть запланированы или завершены, даже когда приложение закрыто, тогдаСтарайтесь избегать использования фоновых служб или диспетчеров аварий.JobScheduler - намного лучшая замена.
  • Если вы хотите выполнить простую фоновую работу, когда приложение находится на переднем плане, попробуйте использовать HandlerThreads или AsyncTasks
...