WorkManager или AlarmManager для ежедневной работы с запросом и уведомлением? - PullRequest
0 голосов
/ 25 марта 2020

Это вариант использования: пользователь устанавливает ежедневное уведомление с указанием c времени. В указанное время делается сетевой запрос на выборку некоторых данных, а затем отображается уведомление с использованием извлеченных данных. Я не уверен, должен ли я использовать AlarmManager или WorkManager для реализации этого варианта использования.

Как я понимаю, AlarmManager лучше всего подходит для планирования в точное время. Но без сети задание не будет выполнено, и я предпочитаю, чтобы задание было отложено для соблюдения сетевых ограничений, а не при выполнении. Для этого типа ограниченной работы, с гарантией окончательного выполнения, WorkManager выглядит как лучшее решение, используя OneTimeWorkRequest с начальной задержкой, чтобы он выполнялся в нужное время.

1 Ответ

1 голос
/ 25 марта 2020

Сравнивая AlarmManager и WorkManager, WorkManager выигрывает по ряду причин:

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

2) Поскольку вы не собираетесь определять конкретное c время для уведомления, я имею в виду, что здесь вы не собираетесь использовать Calender в течение указанного c времени, может быть, 15:00, используйте WorkManager, потому что у вас есть PeriodicWorkRequest в WorkManager. Обратите внимание, что вы не можете сделать PeriodicWorkRequest менее чем за 15 минут. Проверьте PeriodicWorkRequest в официальной документации

3) WorkManager теперь заменяет все API для фоновых заданий, JobScheduler, Firebase JobDispatcher.

4) WorkManager отлично работает с сопрограммами

Это мое скромное мнение, если у вас есть какие-либо вопросы, пожалуйста, ответьте.

Счастливое кодирование 101

...