SyncAdapter不会自动同步

时间:2012-05-31 14:30:02

标签: android android-contentprovider android-syncadapter

我了解自动同步发生在内容修改后30秒。观察logcat的脂肪更长,然后证明自动同步不会发生。至少,不是我的自定义SyncAdapter。

UserProvider:

<provider android:name="nl.providers.UserProvider" 
    android:authorities="nl.providers.UserProvider" 
    android:enabled="true" android:label="Users" />

UserSyncAdapter:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:contentAuthority="nl.providers.UserProvider"
    android:accountType="nl.account" 
    android:supportsUploading="false" 
    android:userVisible="true" />

发射器:

ContentResolver.setIsSyncable(account, "nl.providers.UserProvider", 1);
ContentResolver.setSyncAutomatically(account, "nl.providers.UserProvider", true);

我错过了什么吗?或者,任何人都可以向我提供有关该主题的更多信息以帮助我进行搜索吗?

4 个答案:

答案 0 :(得分:3)

同步发生时没有设定的时间延迟。它可能迟早取决于设备上的其他活动。

修改内容是不够的。你在调用notifyChange()吗? 例如,在插入,更新或删除后的ContentProvider中:

getContext().getContentResolver().notifyChange(rowUri, null, true);

另外请确保在您的帐户&amp;您正在测试实际启用同步的设备或模拟器上的同步设置。

希望能帮助某人:)

答案 1 :(得分:0)

我能想到的原因:

1)您没有为该SyncAdapter添加帐户(在帐户和同步中执行此操作)

2)您的设备上没有互联网连接

答案 2 :(得分:0)

检查系统帐户设置是否存在任何同步错误。如果您的同步向同步结果统计信息添加了例外,则可能会出现这些情况,这可能导致其等待更长时间再次同步。您也可以使用菜单中的“立即同步”进行测试。

答案 3 :(得分:0)

原因可能是因为您设置的是android:supportsUploading="false",您需要将其设置为true,例如android:supportsUploading="true",然后适配器就可以与网络同步。