android contact api calling again and again -
android contact api calling again and again -
i'm trying sync contact in local database noticed contact observer running whether contact updated or not. it's calling 1 time again , again, can 1 help me resolve issue. i'm posting here contact observer class.
public class contactservice extends service { private int mcontactcount; @override public ibinder onbind(intent arg0) { homecoming null; } @suppresslint("newapi") @override public void oncreate() { super.oncreate(); seek { monkeygapdbmanager.initializeinstance(new monkeygapdbhelper( getapplicationcontext()), getapplicationcontext()); this.getcontentresolver().registercontentobserver( contactscontract.contacts.content_uri, true, mobserver); mcontactcount = getcontactcount(); log.d("contact service", mcontactcount + ""); } grab (exception e) { e.printstacktrace(); } } private int getcontactcount() { cursor cursor = null; seek { cursor = getcontentresolver().query( contactscontract.contacts.content_uri, null, null, null, null); if (cursor != null) { homecoming cursor.getcount(); } else { homecoming 0; } } grab (exception ignore) { } { if (cursor != null) { cursor.close(); } } homecoming 0; } private contentobserver mobserver = new contentobserver(new handler()) { @override public void onchange(boolean selfchange) { super.onchange(selfchange); seek { final int currentcount = getcontactcount(); if (currentcount < mcontactcount) { // contact deleted. log.d("<<<<<<<<contact service>>>>>>>", "contact deleted"); log.d("contact service", currentcount + ""); hashset<string> idz = mainactivity.db.getcontactid(); hashset<string> localidz = mainactivity.db .getreplicatedcontactidz(); localidz.removeall(idz); mainactivity.db.deleterplicatecontact(localidz); } else if (currentcount == mcontactcount) { // contact updated. log.d("<<<<<<<<contact service>>>>>>>", currentcount + "updated"); downloadphoto dp = new downloadphoto(contactservice.this, 2); dp.execute(); } else { // new contact. log.d("<<<<<<<<contact service>>>>>>>", currentcount + " added"); seek { downloadphoto dp = new downloadphoto( contactservice.this, 3); dp.execute(); } grab (exception e) { e.printstacktrace(); } } mcontactcount = currentcount; } grab (exception e) { e.printstacktrace(); } } }; @override public int onstartcommand(intent intent, int flags, int startid) { homecoming start_sticky; } @override public void ondestroy() { super.ondestroy(); getcontentresolver().unregistercontentobserver(mobserver); seek { startservice(new intent(this, contactservice.class)); } grab (exception e) { e.printstacktrace(); } } }
android
Comments
Post a Comment