Начните две службы на переднем плане?

Чтобы сохранить работоспособность моих сервисов, могу ли я иметь несколько сервисов на переднем плане?

Я запускаю сразу две службы, и я не хочу, чтобы их уничтожали. Итак, после прочтения в течение нескольких часов, я нашел решение вернуться START_STICKY и использовать startForeground(...) в моем сервисе. Но у меня есть две службы, так что я могу заставить их обоих быть на переднем плане, и оба никогда не будут уничтожены?

Ответ 1

Существует несколько аспектов.

  • Прежде всего: если у вас есть две службы на переднем плане, у вас также должно быть два уведомления. Это рассматривается как функция безопасности (проверьте, например, этот пост). Наличие двух значков в строке состояния для одного приложения может быть довольно запутанным для пользователя и является причиной ИМХО, чтобы отказаться от этой идеи.
  • Как указано в комментариях: даже при запуске на переднем плане служба может быть уничтожена в любом случае. Просто имейте это в виду. Однако, по моему опыту, это происходит довольно редко, почти никогда - кроме как...
  • ... устройства, поставляемые с предустановленными стартовыми менеджерами или энергосберегающими устройствами (например, многие устройства Huawei). Если ваше приложение не настроено должным образом, ваши службы будут убиты несколько секунд/минут после выключения экрана - или он не будет автоматически запущен после перезагрузки.

Итак, как всегда, это зависит от того, что именно вы хотите достичь;) Но для меня это выглядит так, как будто вы могли бы просто реализовать два потока в одном липком сервисе - я не вижу здесь никаких недостатков.

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

Надеюсь, это поможет!