Как сделать сервис живым? - PullRequest
1 голос
/ 08 мая 2020

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

Диспетчер сигналов тревоги

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

  1. Он продолжает работать в Android 6.0 в течение длительного времени, пока не будет убит с помощью очистителя приложений вручную.
  2. В android 8.0 + он убивается при закрытии приложения.

JobSchedular

Я также пробовал JobSchedular для запуска JobService , но он также завершается, когда приложение закрывается в Android 8.0+. Но он работает в течение длительного времени в android 6.0, пока я не запустил очиститель приложений, и он не будет убит.

Я признаю, что не рекомендуется поддерживать работу службы , поскольку это это потеря ресурсов устройства . Но если кто-то через некоторое время хочет синхронизировать данные c и генерировать уведомления локально, то что делать?

Я также пробовал облачные сообщения, которые также не получаются, когда приложение закрывается. Как упоминалось здесь . Различное поведение ОС, такое как Android ограничения фонового выполнения O, может помешать возможности завершить работу.

С другой стороны

Whats App и skype генерируют уведомления, даже если приложения закрыты и запущен очиститель приложений, но он не работает WhatsApp генератор уведомлений.

Какую логическую стратегию использовали эти приложения, чтобы ОС не убивала их процессы?

Я уже пробовал android:stopWithTask="false", но это не работает. И я не знаю, что запускать сервис на переднем плане тоже. Еще у меня прочитано . Я также попытался снова запустить службу по таймеру , когда процесс завершен . (Не работает)

...