2012-03-20 59 views
2

我有一個應用程序使用SyncAdapter對遠程服務器進行REST調用,然後使用Content Provider將更新持久保存到本地SQLLite數據庫。系統如何觸發SyncAdapter?

我可以觸發轉到帳戶&同步,通話然後選擇我的適配器,並使用重新同步按鈕,觸發呼叫

系統如何知道什麼時候(頻率),使onPerformSync()在SyncAdapter中調用?

我正在登錄REST呼叫解決的服務,但我沒有看到任何呼叫,除非我如上所述手動執行。

順便說一句,我在此刻的仿真器正在運行,我還沒有在設備上安裝了這個尚未

回答

1

從您的ContentProvider你必須讓你的SyncAdapter知道有一個變化的數據集。 。

通過調用notifyChange()

例如您ContentProviders中插入()方法做到這一點:

的getContext()getContentResolver()有NotifyChange(rowUri,NULL);

它可能不會馬上同步,但這正是SyncAdapters的工作原理。系統決定何時是同步的好時機。通常我的經驗發生得相對較快。當然,您可能不希望它每次都在數據庫中發生更改時同步,但您始終可以將代碼放入performSync以控制同步的頻率。

希望這可以幫助別人:)