2016-12-28 6 views
6

पर रेट्रोफिट 2 कॉलबैक ऑन रेस्पॉन्स यह शायद पहले पूछा गया था लेकिन ऐसा कोई व्यवहार्य उत्तर नहीं था। हम रेट्रोफिट 2.1.0 एसिंक कॉलबैक का उपयोग कर रहे हैं जो पृष्ठभूमि थ्रेड पर अनुरोध करता है। हालांकि, जब प्रतिक्रिया प्राप्त होती है onResponse इसे यूआई का उपयोग न करने के लिए मजबूर करने वाले नए थ्रेड के भीतर कॉलबैक रखने के बावजूद इसे एप्लिकेशन के यूआई थ्रेड पर वापस भेज दिया जाता है।पृष्ठभूमि थ्रेड

चूंकि हम किसी भी कारण से मुख्य यूआई थ्रेड को अवरुद्ध नहीं करना चाहते हैं, क्या पृष्ठभूमि में प्रतिक्रिया को वापस करने के लिए यह संभव है?

यदि उपरोक्त संभव नहीं है, तो क्या यह अनुशंसा की जाती है कि यूआई थ्रेड अवरोध से बचने के लिए प्रतिक्रिया से अलग थ्रेड को निकाल दिया जाए?

किसी भी मदद की बहुत सराहना की जाएगी। धन्यवाद!

उत्तर

12

आप Retrofit उदाहरण बनाते समय कॉलबैक के लिए एक विशिष्ट निष्पादक निर्दिष्ट कर सकते हैं। यहां एक उदाहरण दिया गया है जो कॉलबैक के लिए SingleThreadExecutor का उपयोग करता है।

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(/* your url */) 
     .callbackExecutor(Executors.newSingleThreadExecutor()) 
     // other builder options... 
     .build(); 
संबंधित मुद्दे