我正在编写一个SyncAdapter来同步日历,我想知道如何检测与同步并发的编辑。我没有在关于这个案例的文档中找到任何内容。
示例:1)SyncAdapter从日历提供程序获取带有所有脏事件的游标,2)同步它们并且3)重置脏标志。在1)和3)之间,用户修改其中一个脏事件。此修改将不会同步,因为脏标志在编辑后会重置!
我知道联系人提供商有一个可用于此的版本字段。日历提供商怎么样?
答案 0 :(得分:0)
这是一个“ hacky”解决方案(我自己没有尝试过)。
在执行步骤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
。您可以使用它来检测同步期间的任何更改,并且仅“确认”那些未修改的偶数。