Как продолжить фоновую службу в Android Oreo без отображения точки уведомления? я продолжаю свою фоновую службу, используя уведомление, но я не хочу показывать уведомление о запущенной службе.
Переведено автоматически
Ответ 1
Если бы вы правильно прочитали документацию по Android Oreo 8.0 где-нибудь в здесь, вы, возможно, не разместили бы здесь этот вопрос.
Шаг 1: Убедитесь, что вы запускаете службу в качестве переднего плана, Service как указано в приведенном ниже коде
Шаг 3: Удалите notification, когда служба остановлена или уничтожена.
@Override publicvoidonDestroy() { ... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { stopForeground(true); //true will remove notification } ... }
Одна из проблем этого решения заключается в том, что оно будет продолжать показывать notification пока ваше Service устройство не будет запущено на всех устройствах под управлением Android Oreo 8.0.
Я уверен, что это решение будет работать, даже когда приложение находится в фоновом режиме или в состоянии отключения.
ВАЖНОЕ ПРИМЕЧАНИЕ: ОТОБРАЖЕНИЕ УВЕДОМЛЕНИЯ О ЗАПУСКЕ СЛУЖБЫ В ФОНОВОМ РЕЖИМЕ (ПРИЛОЖЕНИЯ В ФОНОВОМ РЕЖИМЕ ИЛИ ОТКЛЮЧЕННОМ СОСТОЯНИИ) ЯВЛЯЕТСЯ ОБЯЗАТЕЛЬНЫМ В ANDROID OREO 8.0. ВЫ НЕ МОЖЕТЕ УБЕЖАТЬ С ЭТИМ. ИТАК, РЕКОМЕНДУЕТСЯ ВНЕСТИ НЕОБХОДИМЫЕ ИЗМЕНЕНИЯ В ВАШЕ ПРИЛОЖЕНИЕ, ЧТОБЫ ОНО РАБОТАЛО ДОЛЖНЫМ ОБРАЗОМ В СООТВЕТСТВИИ С ЛУЧШИМИ ПРАКТИКАМИ, КОТОРЫМ СЛЕДУЕТ ANDROID.
Я надеюсь, что это поможет решить вашу проблему.
Ответ 2
Это невозможно в этой версии API version (26) и выше. ОС Android автоматически закроет вашу службу, если вы запустите ее без уведомления пользователя.
Если вы настроили таргетингAPI >= 26, система наложит ограничение на запуск вашего сервиса в фоновом режиме, если только ваша активность не будет на переднем плане. Как только ваша активность перейдет в фоновый режим, служба будет прекращена, когда система обнаружит, что она работает в фоновом режиме (см. Ограничения фоновой службы).
Используя startForegroundService() метод, вы предоставляете это разрешение на запуск сервиса в фоновом режиме, даже если действие не запущено. Также после создания службы служба должна вызвать свой startForeground() метод в течение пяти секунд.
Ответ 3
У меня этот код сработал. Сначала убедитесь, что :