У меня есть приложение для Android с тремя различными механизмами синхронизации, которые работают независимо, каждый из которых использует свой собственный CoroutineScope. Все эти синхронизации зависят от данных одного и того же типа (например, данных инвентаризации), хранящихся в базе данных. В настоящее время я использую DataStore для хранения данных, но планирую перейти на Room из-за проблем с производительностью при работе с большими наборами данных.
Проблема вот в чем:
Каждая синхронизация механизм обрабатывает данные по-разному (например, загрузка из API, локальная фильтрация, сопоставление и т. д.).
Второй механизм синхронизации, который получает самые последние данные из API, должен иметь наивысший приоритет. Это означает, что он всегда должен следить за тем, чтобы обновления данных не были перезаписаны другими механизмами синхронизации, работающими с устаревшими данными.
Вот пример сценария:
00:01: начинается загрузка второй синхронизации. самые последние данные из API и начать процесс сохранения в локальной базе данных.
00:02: При первой синхронизации начинается обработка данных, полученных из локальной базы данных, которые по-прежнему являются старыми данными.< /p>
00:03: Вторая синхронизация завершается, новейшие данные сохраняются в базе данных.
00:04: Первая синхронизация завершает обработку и база данных перезаписывается устаревшими данными. .
В конце концов я получаю устаревшие данные в базе данных, поскольку первая синхронизация перезаписывает более новые данные, сохраненные при второй синхронизации.
Мои вопросы:
Как я могу отдать приоритет второму механизму синхронизации, чтобы никакая другая синхронизация не обрабатывала устаревшие данные и не перезаписывала их обновления?
Есть ли эффективный способ справиться с этим сценарием?
Существуют ли в Android рекомендуемые шаблоны или лучшие практики (например, использование Mutex, общих флагов или очередей) для синхронизации независимых механизмов доступа к общим данным?
Любые рекомендации или примеры будут с благодарностью оценены. .
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android
Как расставить приоритеты в механизмах синхронизации, работающих с общими данными в Android? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как расставить приоритеты разделенных символов в ISplitCharacters в iText 7
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-