Android 检测并发事件编辑

Android 检测并发事件编辑,android,android-calendar,android-syncadapter,Android,Android Calendar,Android Syncadapter,我正在编写一个SyncAdapter来同步日历,我想知道如何检测与同步同步的编辑。我在文件里没有找到关于这个案子的任何东西 示例:1)SyncAdapter从日历提供程序获取包含所有脏事件的游标,2)同步它们,3)重置脏标志。在1)和3)之间),用户修改其中一个脏事件。此修改将不会同步,因为编辑后会重置脏标志 我知道联系人提供程序有一个版本字段可用于此操作。日历提供商呢?这里有一个“黑客”解决方案(我自己没有尝试过) 在执行步骤1之前,对于所有具有DIRTY=1的行,将DIRTY字段的值替换为2

我正在编写一个SyncAdapter来同步日历,我想知道如何检测与同步同步的编辑。我在文件里没有找到关于这个案子的任何东西

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

我知道联系人提供程序有一个版本字段可用于此操作。日历提供商呢?

这里有一个“黑客”解决方案(我自己没有尝试过)

在执行步骤1之前,对于所有具有
DIRTY=1
的行,将
DIRTY
字段的值替换为
2
(或
0
1
以外的任何值)

i、 e,在SQL中,这类似于

update events set DIRTY = 2 where DIRTY = 1 and account_type = 'account type'  and account_name = 'account name';
然后只同步那些具有
脏=2

当您重置
DIRTY
标志时,您仅对仍然具有
DIRTY=2
的系统执行此操作

如果事件具有
DIRTY=1
,则它在这段时间内被修改,您需要重新开始


每当非同步适配器调用修改事件时,CalendarProvider将设置
DIRTY=1
。您可以在同步时使用此功能检测任何更改,并且只“确认”未修改的事件。

这很聪明。我在提供者的源代码中没有看到任何可以阻止这种情况发生的东西。