我試圖瞭解最近幾周同步適配器的整體概念,並且對功能有幾個問題。Android - 聽取android聯繫人中的更改並獲取增量
我要聽所有的變化中的Android通訊錄
方法1:
我創建了一個自定義帳戶,並創建了同步適配器。 書面廣播聽衆聽ContactsContract.Contacts.CONTENT_URI
和ContentObserver
類我打電話ContentResolver.requestSync(account,ContactsContract.AUTHORITY,bundle)
這是作爲一個觸發點時,曾經有一個變化的聯繫人數據開始同步適配器的 public void onChange(boolean selfChange)
。
一切都看起來不錯,直到這裏,但在SyncAdapter類我不是onPerofmSync
獲得在
SyncResult
變量的任何數據,我怎樣才能從接觸增量變化?
如果這不是觸發同步適配器的方法,請糾正我。
方法2:
我跟隨他們在談論查詢哪裏dirtyFlag
設置爲1 我是能夠得到改變的聯繫人數據庫的一些例子,但我的問題是
誰會將
dirtyFlag
的值設置回'0'?
如果我必須這樣做,那麼可以說在手機上有多個應用程序可以做同樣的事情。如果某些應用程序在我的應用程序嘗試訪問信息之前將該標誌設置爲「0」。我會錯過所有的變化。
方法3:
查詢數據庫,並跟蹤version
在我自己的數據庫中的每個接觸和「版本」已經改變認爲,在接觸的變化。這看起來像一個沉重的過程。
最後,我的問題是什麼是最好的方式來聆聽用戶設備上 聯繫人的變化?
是的,這是我的問題中的第三種方法。 – Prakash
是的,所以這就是我會做的,這不是一個很繁重的過程,並且我沒有辦法在沒有查詢的情況下通過所有聯繫人進行此操作。 – marmor
因此,每次有「registerContentObserver(ContactsContract.Contacts.CONTENT_URI」調用的最小觸發器,我們應該執行整個聯繫人查詢以查看發生了什麼變化與我們有什麼變化? –