2012-06-30 7 views
5

मेरी AccountAuthenticatorActivity मैं कोशिश सेटअप किसी खाते के समन्वयन-विकल्प में सिंक कर रहा है:खाता निम्नलिखित लाइनों के साथ <code>addAccountExplicitly</code> के बाद हर मिनट

ContentResolver.setIsSyncable(account, authority, 1); 
ContentResolver.setSyncAutomatically(account, authority, true); 
int seconds = getResources().getInteger(R.integer.syncFrequencySeconds); 
ContentResolver.addPeriodicSync(account, authority, new Bundle(), seconds); 

syncFrequencySeconds 86400 (हर 24 घंटे में) पर सेट है। लेकिन मेरा सिंक एडाप्टर अभी भी हर मिनट ट्रिगर किया गया है। मैं क्या गलत कर रहा हूं? (सिंक स्वयं किसी भी समस्या के बिना काम करता है)

उत्तर

3

इसे स्वयं हल करें: SyncResult.stats सामग्री रिसेल्वर-ऑपरेशंस के साथ मेल नहीं खाता जब सिंक-एडाप्टर दोहराता है। जैसे ही वे मेल खाते थे, सिंक को अपेक्षित के रूप में ट्रिगर किया जाता है।

अद्यतन: एक और मुद्दा था, जिसे मैंने सिंक-ऑपरेशन के दौरान ContentResolver.notifyUpdate कहा था। इसे हटा दिया, और यह ठीक था।

+0

सिंकएडाप्टर के संपर्क ContentResolver के साथ SyncResult.stats से मिलान करने में आपने कैसे प्रबंधित किया? – Nifhel

+1

समझ में नहीं आता कि संपर्कों के साथ आपका क्या मतलब है। आपको केवल स्वीकृति गिनने की जरूरत है। उदाहरण के लिए आपने 'SyncResult.stats.numInserted ++' से एक प्रविष्टि डाली है, इसे करना चाहिए। – oleh

+0

धन्यवाद, मुझे आपकी समस्या थी लेकिन एक अलग कारण के लिए। मेरी समस्या का कारण यह था कि मैं गलत अधिकार का उपयोग कर रहा था, जब मैंने सही काम किया (com.android.contacts) सबकुछ काम करता था। :) – Nifhel

1

मेरा SyncAdapter हर मिनट चल रहा था, pollFrequency अंतराल का सम्मान नहीं करता था। मैं स्थानीय डेटा को दूरस्थ सर्वर (SyncAdapter पर) भेजने के लिए केवल प्रश्नों का उपयोग कर रहा था। मैं SyncAdapter पर कोई स्थानीय डेटा अपडेट नहीं कर रहा था।

लेकिन मेरा स्थानीय डेटा किसी अन्य सेवा का उपयोग करके बहुत कम अंतराल (बीएलई डिवाइस से डेटा प्राप्त करने) पर अपडेट किया जा रहा था।

इस समस्या को हल करने के लिए, मैं अतिरिक्त पैरामीटर syncToNetwork: false (जाँच notifyChange प्रलेखन) शामिल करने के लिए अपने डेटा प्रदाता पर सभी notifyChange कॉल बदलना पड़ा।

//getContext().getContentResolver().notifyChange(uri, null); 
getContext().getContentResolver().notifyChange(uri, null, false); 

यह परिवर्तन को प्रभावित नहीं किया मेरी CursorAdapter जैसे ही मैं टेबल को अपडेट करते ही डेटा दिखाने के लिए Activity में इस्तेमाल किया।

syncResult.stats पर उचित मूल्यों को असाइन करने से मेरी समस्या हल नहीं हुई।

संबंधित मुद्दे