#java #android #android-workmanager
#java #Android #android-workmanager
Вопрос:
В настоящее время у нас есть настройка отправки электронной почты работника, с Интернет доступен ограничение.
// Create a Constraints that defines when the task should run
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
// Many other constraints are available, see the
// Constraints.Builder reference
.build();
OneTimeWorkRequest oneTimeWorkRequest =
new OneTimeWorkRequest.Builder(EmailWorker.class)
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.LINEAR, EMAIL_WORKER_BACKOFF_DELAY, TimeUnit.MILLISECONDS)
.addTag(EmailWorker.TAG)
.setInputData(inputData)
.build();
WorkManager workManager = getWorkManager();
workManager.enqueue(oneTimeWorkRequest);
Нам было интересно. Что делать, если Интернет никогда не будет доступен в течение длительного периода?
- Можем ли мы указать максимальное количество допустимых ожидающих рабочих на основе выбранного ТЕГА? (Чтобы избежать нехватки памяти / дискового пространства)
- Когда будет достигнуто максимальное допустимое количество ожидающих работника, можем ли мы отказаться от самого старого работника и принять самого нового работника?
Комментарии:
1. Вам нужно больше одного
EmailWorker
? Если нет, возможно, функция «уникальная работа» является правильной для использования.2. ДА. Мы разрешаем пользователю отправлять «неограниченную» электронную почту. При любом сбое вызова API доставки электронной почты у нас будет N повторных попыток для этого. Когда предыдущее электронное письмо все еще находится на рассмотрении, мы по-прежнему разрешаем пользователю продолжать отправку.
3. Но зачем вам для этого нужно несколько рабочих? Когда рабочий становится активным, отправьте все сообщения в очереди.
4. Мы хотим избежать усложнения разработки нашей собственной системы очередей. Мы хотим использовать существующую структуру WorkManager, чтобы все было просто.
5. FWIW, Tape — это система очередей.