Проблема вот в чем:
Каждая синхронизация механизм обрабатывает данные по-разному (например, загрузка из API, локальная фильтрация, сопоставление и т. д.).
Второй механизм синхронизации, который получает самые последние данные из API, должен иметь наивысший приоритет. Это означает, что он всегда должен следить за тем, чтобы обновления данных не были перезаписаны другими механизмами синхронизации, работающими с устаревшими данными.
Вот пример сценария:
00:01: начинается загрузка второй синхронизации. самые последние данные из API и начать процесс сохранения в локальной базе данных.
00:02: При первой синхронизации начинается обработка данных, полученных из локальной базы данных, которые по-прежнему являются старыми данными.< /p>
00:03: Вторая синхронизация завершается, новейшие данные сохраняются в базе данных.
00:04: Первая синхронизация завершает обработку и база данных перезаписывается устаревшими данными. .
В конце концов я получаю устаревшие данные в базе данных, поскольку первая синхронизация перезаписывает более новые данные, сохраненные при второй синхронизации.
Для упрощения:
Код: Выделить всё
simple:
-> fetch entire inventory (1st synchro)
-> fetch stocks (2nd synchro) with creating instance with local DB(OLD data) to process
-> inventory is saved to local DB( 1st synchro)
-> inventory is saved to local DB (2nd synchro) will old data.
Last save is with old data, effect is the same as I don't download any new entire inventory with 1st synchro
Как определить приоритет второго механизма синхронизации, чтобы никакая другая синхронизация не обрабатывала устаревшие данные и не перезаписывала их обновления?
Есть ли эффективный способ справиться с этим сценарием?
Существуют ли в Android рекомендуемые шаблоны или лучшие практики (например, использование Mutex, общих флагов или очередей) для обрабатывать синхронизацию независимых механизмов доступа к общим данные?
Будем признательны за любые рекомендации или примеры.
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android