Вот «хакерское» решение (я сам не пробовал).
Перед выполнением шага 1 вы заменяете значение поля DIRTY
на 2
(или любое другое значение).кроме 0
и 1
) для всех строк, которые имеют DIRTY = 1
.
, т. е. в SQL это будет что-то вроде
update events set DIRTY = 2 where DIRTY = 1 and account_type = 'account type' and account_name = 'account name';
Тогда вы синхронизируете только те, которые имеютDIRTY = 2
.
Когда вы сбрасываете флаг DIRTY
, вы делаете это только для тех, у кого все еще есть DIRTY = 2
.
Если событие имеет DIRTY = 1
, оно былоизменено между ними, и вам нужно начать все сначала.
CalendarProvider устанавливает DIRTY = 1
всякий раз, когда вызов не-синхронизирующего адаптера изменяет событие.Вы можете использовать это для обнаружения любых изменений во время синхронизации и «подтверждать» только те события, которые не были изменены.