2012-05-23 35 views
3

我面臨一個奇怪的問題,我正在使用ContentObserver來捕捉聯繫人中的更改,但問題在於即使我調用了onchange()方法我沒有做任何改變。這裏是我的代碼:即使未更改聯繫人,也正在呼叫內容觀察者

getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, new MyCOntentObserver()); 

public class MyCOntentObserver extends ContentObserver{ 
     public MyCOntentObserver() { 
      super(null); 
     } 
     @Override 
     public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 
      Log.e("","~~~~~~"+selfChange); 
     } 

     @Override 
     public boolean deliverSelfNotifications() { 
      Log.e("","~~~~~~ Change"); 
      return true; 
     } 
    } 

任何人都可以幫忙嗎?
在此先感謝

+0

什麼時候被調用呢? – josephus

+0

它隨時被調用,iam不會使用任何它被調用的設備,它也會在設備與gmail帳戶同步時調用 – AnasBakez

+1

@Josephus Villarey @AnasBakez將您的URI改爲** ContactsContract.Contacts。 CONTENT_VCARD_URI **並將'notifyForDescendents'設置爲** false ** –

回答

0

registerContentObserver方法接受布爾值notifyForDescendents變量,您設置爲true。也許設置爲false?

否則,一些後臺任務可能會與觀察者混淆。 :)

+0

檢查notifyForDescendents文檔http://developer.android.com/reference/android/content/ContentResolver.html#registerContentObserver(android.net.Uri,boolean,android.database.ContentObserver) –

+0

否則。 :) – josephus

+0

我怎麼知道什麼是調用OnChange方法? – AnasBakez