2012-05-31 56 views
4

我知道自動同步在內容修改後30秒內發生。然後觀察logcat爲更長的時間,這證明自動同步不會發生。至少,不適用於我的自定義SyncAdapter。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); 

難道我米發佈什麼?或者任何人都可以給我更多關於這個主題的信息來幫助我的搜索?

+2

[StackOverflow:爲什麼ContentResolver.requestSync不會觸發同步?] [1]提供您需要排隊等待同步的所有步驟。 [1]:http://stackoverflow.com/questions/5253858/why-does-contentresolver-requestsync-not-trigger-a-sync?rq=1 – jcwenger

回答

0

的原因,我能想到的:

1)您沒有爲SyncAdapter(做在帳戶&同步)

2)還有就是你的設備

3
在沒有互聯網連接的添加帳戶

發生同步時沒有設定的時間延遲。這可能遲早會取決於設備上的其他活動。

修改內容是不夠的。你打電話給notifyChange()嗎? 例如在您的ContentProvider後您的插入,更新或刪除:

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

還要確保在設備或模擬器上你的帳戶&同步設置您要測試的是同步實際上是啓用。

希望幫助別人:)

+0

謝謝,.notifyChange()是什麼我錯過了在網絡狀態改變時自動觸發同步。 – etherton

0

檢查系統的帳戶設置任何同步錯誤。如果您的同步在同步結果統計信息中添加了例外情況,這可能會導致等待時間再次同步。您也可以使用菜單中的「立即同步」進行測試。

0

的原因可能是因爲你設置android:supportsUploading="false",你需要將其設置爲trueandroid:supportsUploading="true"則適配器可以與網絡同步。