TGViewer
Android Developer Android Developer @android_dev_ru · 1.27K subscribers
Post #57 154
Фоновая синхронизация запускается несколько раз

Экран, вход в аккаунт и восстановление сети ставят одну синхронизацию в WorkManager. Если каждый раз вызывать enqueue(), в очереди могут оказаться несколько одинаковых работ.

Дайте операции устойчивое имя. Для одноразовой синхронизации можно выбрать enqueueUniqueWork с KEEP: пока работа с этим именем не завершена, новая не добавляется. Пример вызова с заранее созданным OneTimeWorkRequest:

workManager.enqueueUniqueWork(
"sync:$accountId",
ExistingWorkPolicy.KEEP,
request
)


REPLACE решает другую задачу: отменяет текущую работу и заменяет её. Выбирайте политику по смыслу операции. Имя с accountId разделяет аккаунты; случайный UUID в имени убрал бы дедупликацию.

Важная граница: уникальная работа не гарантирует единственный HTTP-запрос за всё время. Если сервер выполнил изменение, а клиент не получил подтверждение, повтор может повторить эффект. Для таких операций нужен отдельный контракт идемпотентности на сервере.

#Android #WorkManager #Практика
  • ❤‍🔥 2
  • 👍 1
  • 🔥 1
More from @android_dev_ru
  1. Oct 17, 2026Клавиатура закрывает кнопку: где искать причину Форма помещается на экран, пока не открыла…
  2. Oct 16, 2026Практика · Android После возвращения пропал фильтр поиска Пользователь выбрал категорию, у…
  3. Jun 28, 2026🖥 Китайский разработчик выложил в открытый доступ целую автомобильную ОС, которая превращ…
  4. Jun 28, 2026✏️ Чек-лист: полный контроль качества Перед релизом или крупным обновлением пройдитесь по…
  5. Jun 27, 2026🎁 pod install --repo-update – надежный способ избежать "кэш-проблем" с CocoaPods Эта кома…
  6. Jun 27, 2026🖥 Java библиотека — канал для топового джависта! Канал ведёт Senior Java разработчик и в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →