2011-04-26 34 views
0

我的應用創建日曆事件,其中事件的描述中包含聯繫人姓名。 當用戶使用手機的聯繫人更改聯繫人姓名時,我希望更改流向日曆事件的說明字段。什麼是將聯繫人姓名與日曆事件描述同步的最佳方式

什麼是最好的方法來做到這一點?

我可以考慮兩種選擇。兩者都包含我自己數據庫中的聯繫人姓名副本。發生更改時,查找記錄更改記錄並更新日曆事件。

問題是如何有效地將新名稱移動到我的數據庫。

  1. 在聯繫人上註冊內容觀察者並比較所有聯繫人姓名。
  2. 使用同步適配器

哪種方法是真正更有效率?

我不熟悉同步適配器,但我認爲適配器不需要帳戶(是否有這樣的事情?),我希望更改立即流動(即不在下一個計劃同步)

任何幫助,包括完全不同的方向將不勝感激。

回答

1

SyncAdapter絕對需要一個帳戶。 make the system recognize them的唯一方法是使用AndroidManifest.xml中的ContentResovler和一些xml資源將它們與Account/ContentAuthority映射相關聯。

我想你可以彌補自己什麼也不做的帳戶和服務,沒有什麼權力,有你的SyncAdapter 同服務器...但如果是這樣,你最終會得到同樣的事情,帶有定時器呼叫的服務。您不能劫持或與現有SyncAdapter並行工作 - 必須爲給定的ContentAuthority註冊一個且僅有一個SyncAdapter。

要在一對ContentProviders之間交叉數據,您需要使用ContentObserver和服務來實現。缺點是你需要努力工作才能保持服務的活力 - 在操作系統的高使用率下,它往往會被殺死。一旦發生故障,您需要找到一種方法來啓動備份(計時器?),然後手動檢查您的服務死亡時錯過的更改。

+0

非常好的總結。謝謝jcwenger。 – OferR 2011-07-03 15:23:12

+0

如何檢測對內容的操作?像插入,更新和刪除。 – Joset 2011-07-30 06:37:31

+0

檢測操作在哪裏? SyncAdapter內部?在這種情況下,android框架在發生時直接進行函數調用。如果您正在討論應用程序,那就是ContentObserver,它可以讓您知道特定的行或表具有新數據。在這種情況下,這值得發佈自己的問題。 – jcwenger 2011-07-30 15:35:47

相關問題