📱 Android-разработка без лишнего шума.
⚡️ Kotlin • Jetpack Compose • Gradle • Android Studio
🛠 Полезные библиотеки, open-source проекты, инструменты и практические разборы.
💚 Меньше поиска — больше кода.
Post #57
149

Фоновая синхронизация запускается несколько раз
Экран, вход в аккаунт и восстановление сети ставят одну синхронизацию в WorkManager. Если каждый раз вызывать enqueue(), в очереди могут оказаться несколько одинаковых работ.
Дайте операции устойчивое имя. Для одноразовой синхронизации можно выбрать enqueueUniqueWork с KEEP: пока работа с этим именем не завершена, новая не добавляется. Пример вызова с заранее созданным OneTimeWorkRequest:
REPLACE решает другую задачу: отменяет текущую работу и заменяет её. Выбирайте политику по смыслу операции. Имя с accountId разделяет аккаунты; случайный UUID в имени убрал бы дедупликацию.
Важная граница: уникальная работа не гарантирует единственный HTTP-запрос за всё время. Если сервер выполнил изменение, а клиент не получил подтверждение, повтор может повторить эффект. Для таких операций нужен отдельный контракт идемпотентности на сервере.
#Android #WorkManager #Практика
Экран, вход в аккаунт и восстановление сети ставят одну синхронизацию в WorkManager. Если каждый раз вызывать enqueue(), в очереди могут оказаться несколько одинаковых работ.
Дайте операции устойчивое имя. Для одноразовой синхронизации можно выбрать enqueueUniqueWork с KEEP: пока работа с этим именем не завершена, новая не добавляется. Пример вызова с заранее созданным OneTimeWorkRequest:
workManager.enqueueUniqueWork(
"sync:$accountId",
ExistingWorkPolicy.KEEP,
request
)
REPLACE решает другую задачу: отменяет текущую работу и заменяет её. Выбирайте политику по смыслу операции. Имя с accountId разделяет аккаунты; случайный UUID в имени убрал бы дедупликацию.
Важная граница: уникальная работа не гарантирует единственный HTTP-запрос за всё время. Если сервер выполнил изменение, а клиент не получил подтверждение, повтор может повторить эффект. Для таких операций нужен отдельный контракт идемпотентности на сервере.
#Android #WorkManager #Практика
- ❤🔥 2
- 👍 1
- 🔥 1













