Привет всем гикам Android!
Я разрабатываю приложение для Android, ориентированное на Android Oreo (O).
minSdkVersion 21
targetSdkVersion 27
Я знаю, что существуют ограничения для запуска фоновых служб, и я могу их преодолеть, используя метод обслуживания startForeground(...).
Мое сомнение есть;
Должен ли я использовать этот метод startForeground(...) для всех версий Android? Поскольку при вызове этого метода будет отображаться уведомление, я бы по возможности избегал его в версиях до Oreo.
Итак, чтобы избежать отображения уведомлений на устройствах до Oreo, могу ли я использовать приведенный ниже фрагмент кода? Будет ли он работать в фоновом режиме как до, так и после Oreo?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /* 26 */) {
// Make the service as foreground service by calling startForeground method
} else {
// Nothing to do
}
Подводя итог моему вопросу:
targetSdkVersion 27 и minSdkVersion 21MyService должен работать в фоновом режиме в обеих версиях ОС pre Oreo и пост Oreo.startForeground(...) только для версии ОС пост OreoСм. Пределы фонового выполнения
@HedeH, спасибо за ответ ... Не могли бы вы опубликовать его в качестве ответа, чтобы я мог принять его. :)
MyService should run in the background in both pre Oreo and post Oreo OS versions. Is it okay to limit the usage of startForeground(...) for only post Oreo OS version?
Да, это нормально для этого.
Service будет работать в фоновом режиме на устройствах pre-oreo, но если пользователь убьет ваше приложение, Service также умрет, если вы не используете startForeground для pre-oreo.
Спасибо за ответ @HedeH (Y)
WorkManager предназначен для задач, требующих гарантии того, что система будет их запускать, даже если приложение завершит работу. Запуск на переднем плане выглядит хорошо, когда ваш вариант использования также требует уведомления, например: резервное копирование, навигация, обновления местоположения. Такой передний план запуска операции подходит как нельзя лучше. Но есть и другие случаи, когда он не должен показывать уведомление. Кроме того, его следует использовать всегда, когда задача откладывается.
WorkManager uses an underlying job dispatching service when available based on the following criteria: Uses JobScheduler for API 23+ Uses a custom AlarmManager + BroadcastReceiver implementation for API 14-22
ссылка для получения дополнительной информации https://developer.android.com/reference/androidx/work/WorkManager?hl=en
Да, это нормально для этого. Он будет работать в фоновом режиме на устройствах pre-oreo, но если пользователь убьет ваше приложение, служба также умрет, если вы не используете
startForegroundдля pre-oreo.