Долгая background задача

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

Я изучил много материалов, но так и не понял, что именно мне нужно:

  1. Foreground service - проблема в том, что нужно возобновлять поиск при перезагрузке девайса, контролировать подключение к интернеру и т.д. и всё это нужно реализовывать вручную, в отличие от следующих 2 пунктов
  2. WorkManager - насколько я понял из документации, всем фоновым задачам позволено выполняться не более 10 минут, после чего они будут остановлены. Не подходит, т.к. в моём случае время прослушивания может варьироваться и в некоторых случаях быть больше 10 минут.
  3. JobScheduler - как я понял, он используется внутри WorkManager в api 23+ , и также начиная с Api 30+ он может каким-то образом "замедлять" приложение...

Прошу Вас помочь мне советом/статьёй или чем-нибудь ещё, чтобы решить эту проблему


Ответы (1 шт):

Автор решения: Barmaley

Вам нужен IntentService - судя по описанному вами паттерну - это как раз он.

Однако, при работе в фоне у него (равно как и любого фонового процесса в Android) - есть свои лимиты - наложены начиная с Android 8.0

IntentService начиная с API 30 объявлен deprecated и заменен на JobIntentService

→ Ссылка