检测并发事件编辑

时间:2018-06-06 17:23:43

标签: android android-calendar android-syncadapter

我正在编写一个SyncAdapter来同步日历,我想知道如何检测与同步并发的编辑。我没有在关于这个案例的文档中找到任何内容。

示例:1)SyncAdapter从日历提供程序获取带有所有脏事件的游标,2)同步它们并且3)重置脏标志。在1)和3)之间,用户修改其中一个脏事件。此修改将不会同步,因为脏标志在编辑后会重置!

我知道联系人提供商有一个可用于此的版本字段。日历提供商怎么样?

1 个答案:

答案 0 :(得分:0)

这是一个“ hacky”解决方案(我自己没有尝试过)。

在执行步骤1之前,对于所有具有以下内容的行,将DIRTY字段的值替换为2(或01以外的任何值) 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。您可以使用它来检测同步期间的任何更改,并且仅“确认”那些未修改的偶数。