2011-03-11 11 views
6

मुझे सिंक एडाप्टर या सिंक प्रगति घटनाओं के कुछ परिणाम रिसीवर से प्रसारण रिसीवर इंटरफ़ेस के बारे में पढ़ना याद है। क्या सिंक एडाप्टर पैटर्न में कुछ बनाया गया है या क्या यह घर से उगाया गया है?एंड्रॉइड सिंक एडाप्टर से प्रगति की बात कैसे सुनती है?

+0

मैंने गतिविधि के माध्यम से यूआई पर प्रगति को अद्यतन करने के लिए इसका उपयोग किया है। चूंकि मैं सिंक एडाप्टर का समय नहीं लेता हूं, इसलिए मैं अनिश्चित प्रगति का उपयोग करता हूं। मैं आपके सिंक कोड को देखता हूं कि यह देखने के लिए कि आप निरंतर गैर रोक प्रक्रिया के बिना इसका उपयोग कैसे कर सकते हैं, उदाहरण के लिए थ्रेड समूह या एक्जिक्यूटर सेवा में काम कर रहे कई थ्रेड का उपयोग करें। आप प्रत्येक कुछ सेकंड/मिनटों में रिसीवर को अतिरिक्त पैरा भी भेज सकते हैं जैसे 'कोड' intent.putExtra (SYNCING_STATUS_TIME, 30); 'कोड' –

उत्तर

5

क्या काम करता है:

विधि एक 2010 Google आईओ सत्र में सुझाव दिया, Developing Android REST client applications के रूप में टैग संकेत मिलता है कि एक रिकार्ड प्राप्त किया गया जा रहा है या रखा या आदि यह एक प्रति-पंक्ति की अनुमति देता है अपने ContentProvider में कॉलम जगह है आपके यूआई में स्पिनर (या अन्य दृश्य परिवर्तन) रखा जाना चाहिए। आप कस्टम कर्सर एडाप्टर के माध्यम से ऐसा कर सकते हैं जो ListView चलाता है। आवश्यकतानुसार झंडे को बदलने के लिए आपका ContentProvider हुक पर है।

क्या नहीं करता है:

तुम भी उपयोग कर सकते हैं एक SyncStatusObserver - स्थिति के प्रत्येक परिवर्तन करने के लिए काफी बेकार के बाद से यह प्रतिक्रिया करता है, न सिर्फ अपने विशिष्ट खाता/contentauthority जोड़ी है, और वास्तव में कौन सा नहीं बताता है एक बदलाव के अलावा आप सब कुछ भी कुछ भी हुआ। तो, आप यह नहीं बता सकते कि क्या सिंक किया जा रहा है, और आप "सिंक ईवेंट के अंत" से "सिंक ईवेंट की शुरुआत" को अलग नहीं कर सकते हैं। बेकार। : पी

+1

मैं एक पब-सब दृष्टिकोण पर गया जिसके लिए मैं परिणाम रिसीवर का उपयोग सिंक थ्रेड से UI पर वापस प्रतिक्रिया देने के लिए करता हूं। सिंक थ्रेड चल रहा है और यदि कोई उपलब्ध है, तो सेवा ग्राहकों को जोड़ती है और हटा देती है, यह सक्रिय रिसीवर को प्रसारित करती है। मैं UI को ट्रिगर करने के लिए सिंकस्टैटस ऑब्सर्वर का उपयोग करने के बारे में सोच रहा था कि आवधिक सिंक ट्रिगर हो गया है - मैं इसे "स्टार्ट-सिंक" सदस्यता स्थिति-ईवेंट में प्रॉक्सी कर दूंगा। – mobibob

11

मैंने अभी एक सिंक एडाप्टर से ब्रॉडकास्ट रिसीवर लागू किया है और यह घड़ी की तरह काम करता है!

एक रिसीवर सेट को एक आंतरिक कक्षा के रूप में सेट करने और रजिस्टर करने वाले रजिस्टर का उपयोग करने पर रिसीवर ऑनरेट्रॉय में क्रेते और अनियंत्रित रिसीवर ने मेरे लिए यह किया।

मैं अंडे और धागे के एक नंबर क्वेरी करने के लिए एक रणनीति विधि के रूप में, मैं सिर्फ एक SyncAdapter रन की शुरुआत में कर रहे हैं:

Intent intent = new Intent(); 
intent.setAction(ACTION); 
intent.putExtra(SYNCING_STATUS, RUNNING); 
context.sendBroadcast(intent); 

और सिंक रन के अंत में मेरे पास है:

intent.putExtra(SYNCING_STATUS, STOPPING); 
context.sendBroadcast(intent); 

मेरे गतिविधि के भीतर, मैं घोषणा:

onCreate(Bundle savedInstance){ 

super.onCreate(savedInstance); 
SyncReceiver myReceiver = new SyncReceiver(); 
RegisterReceiver(myReceiver,ACTION); 

} 



onDestroy(){ 

super.onPause(); 
unRegisterReceiver(myReceiver); 

} 



public class SyncReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
      Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     //do something 
    } 
    } 
} 

इस परिदृश्य आप जोड़ने की जरूरत नहीं है के लिए आपका रिसीवर मैनिफेस्ट फ़ाइल में। बस के रूप में उपयोग करें!

+0

मेल यह दिलचस्प और शायद बहुत सटीक है, लेकिन सवाल सुनने (निगरानी) प्रगति के बारे में था। मुद्दा यह था कि मेरा सिंक एडाप्टर चल रहा था और चल रहा था, बिना किसी अंत में, इसलिए मैं यूआई को प्रगति प्रदान करना चाहता था। – mobibob

+0

मैंने गतिविधि के माध्यम से यूआई पर प्रगति को अद्यतन करने के लिए इसका उपयोग किया है। चूंकि मैं सिंक एडाप्टर का समय नहीं लेता हूं, इसलिए मैं अनिश्चित प्रगति का उपयोग करता हूं। मैं आपके सिंक कोड को देखता हूं कि यह देखने के लिए कि आप निरंतर गैर रोक प्रक्रिया के बिना इसका उपयोग कैसे कर सकते हैं उदाहरण के लिए थ्रेड ग्रुप में काम करने वाले कई थ्रेड का उपयोग करें या एक्जिक्यूटर सेवा –

+0

यदि आप किसी तरीके की तलाश में हैं तो यह सबसे अच्छा जवाब है SyncAdapter की शुरुआत और अंत में हेरफेर करने के लिए। – MurifoX

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