सिंक्रनाइज़ करने के बारे में कैसे पता चलेगा कि मैं एक्शनबार में प्रोग्रेसबार दिखाना चाहता हूं, जबकि मेरा सिंक एडाप्टर सक्रिय रूप से वेब से सामग्री को सिंक्रनाइज़ कर रहा है।सिंकएडाप्टर चल रहा एनीमेशन - सिंक एडाप्टर सक्रिय रूप से
मैंने का उपयोग ContentProvider.addStatusChangeListener के साथ करने का प्रयास किया है। हालांकि, मैं यह नहीं देख सकता कि सिंक एडाप्टर सक्रिय रूप से चल रहा है या नहीं। मैं केवल देख सकते हैं:
- SyncAdapter ContentResolver.isSyncPending
- का उपयोग कर लंबित है SyncAdapter लंबित है या सक्रिय रूप से ContentResolver.isSyncActive
ये झंडे जोड़ा जा सकता है का उपयोग कर काम कर रहे हैं: एक SyncAdapter कि जाँच करने के लिए !isSyncPending && isSyncActive
इतना है कि यह संभव है सक्रिय रूप से काम कर रहा है और उसके पास कोई लंबित काम नहीं है। हालांकि, कुछ मामलों में सिंक एडाप्टर सक्रिय रूप से काम कर रहा है और इसके लिए एक दूसरा लंबित अनुरोध इंतजार कर रहा है।
यह बहुत आसान लगता है लेकिन मुझे इस समस्या के आसपास कोई रास्ता नहीं मिल रहा है। प्रोग्रेसबार तब दिखाई देता है जब सिंकएडाप्टर नहीं चल रहा है, उपयोगकर्ताओं को यह इंप्रेशन दे रहा है कि सिंक्रनाइज़ेशन बहुत धीमा है। यह प्रोग्रेसबार दिखाने के लिए उपयोगकर्ता को लगता है कि कुछ भी नहीं हो रहा है।
कोड में उपरोक्त समाधान नीचे दिखाया गया है। हम activity.onResume में पर्यवेक्षक रजिस्टर:
int mask = ContentResolver.SYNC_OBSERVER_TYPE_PENDING | ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE;
syncHandle = ContentResolver.addStatusChangeListener(mask, syncObserver);
syncObserver यहाँ के रूप में परिभाषित किया गया है:
syncObserver = new SyncStatusObserver()
{
@Override
public void onStatusChanged(int which)
{
Account account = getSomeAccount();
boolean syncActive = ContentResolver.isSyncActive(account, CONTENT_AUTHORITY);
boolean syncPending = ContentResolver.isSyncPending(account, CONTENT_AUTHORITY);
boolean isSynchronizing = syncActive && !syncPending;
updateRefreshButtonState();
}
}
एक्लेयर, फ्रायओ, जिंजरब्रेड के लिए, केवल उपरोक्त समाधान के लिए समाधान केवल डिवाइस पर ही है। यदि किसी डिवाइस पर एक से अधिक खाते मौजूद हैं, तो पहला खाता केवल समन्वयित होगा; बाकी को नजरअंदाज कर दिया जाता है। – ChuongPham