обрабатывать подключение к сокету в фоновой службе для API 28

Перед API 28 я могу просто запустить фоновую службу и постоянно прослушивать соединение сокета для любых входящих данных, однако в последних изменениях в API 28, как показано здесь https://developer.android.com/about/versions/oreo/background#services я больше не могу запускать фоновую службу в Android 9, если она не охватывает только один из следующих случаев

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

Обработка высокоприоритетных сообщений Firebase Cloud Messaging (FCM).
Получение широковещательных сообщений, например SMS/MMS. Выполнение PendingIntent из уведомления. Запуск службы VpnService до того, как приложение VPN переместится на передний план.

Единственный вариант, который я нашел, - запустить службу в качестве переднего плана. Я уже нашел какую-то альтернативу, например, использование JobScheduler или WorkManger, но я не думаю, что они смогут удовлетворить мои требования.

поэтому мой вопрос: есть ли другой способ прослушивания сокетного соединения, предназначенного для Android 9 (api 28), кроме использования службы переднего плана?


person has19    schedule 07.11.2018    source источник
comment
что вы имеете в виду, что является лучшей практикой? Есть только один вариант, и вы уже знаете, что это такое   -  person Tim    schedule 07.11.2018
comment
ты имеешь в виду службу переднего плана?   -  person has19    schedule 07.11.2018


Ответы (2)


Хороший вопрос. Я также выжил с обслуживанием. Служба переднего плана также не является лучшим решением для Android 9. Причина в том, что из-за обстоятельств системных ресурсов служба переднего плана также может быть отключена.

Лучше вы можете использовать WorkManager. Это придаст вам приятный вкус.

Попробуйте.

person Al-Amin    schedule 07.11.2018
comment
я не уверен, но я не думаю, что смогу использовать workmanager для длительной задачи, такой как фоновая служба - person has19; 07.11.2018

Я использовал службу переднего плана для Android с диспетчером работ. Если вас беспокоит отключение службы, проверяйте статус работы службы с периодическим диспетчером работ. Например, каждые 10 минут или 1 час. Поскольку диспетчер работ несовместим с логикой. работы как сокет, вы можете делать это периодически или вы можете сделать это один раз.

Soo
Socket listen every time
Work manager work by periodicly or one shot
Service works every time;

Конечный результат каждый раз, когда рабочий и когда-либо прослушиватель, идеально подходит для службы push-уведомлений Firebase.

for a good working cycle
Service Continuously works and listens with a socket inside.
The work manager checks periodically whether the service is running, in case the service is closed.
person Numan Turkeri    schedule 20.04.2020