वहाँ वैसे भी observeOn समारोह में मौजूदा धागा उपयोग करने के लिए जावा rx बताने के लिए है? मैं एंड्रॉइड सिंकैडाप्टर के लिए कोड लिख रहा हूं और मैं चाहता हूं कि सिंक एडाप्टर थ्रेड में परिणाम मुख्य थ्रेड में न हों। मैंजावा आरएक्स में कॉलिंग थ्रेड पर कैसे निरीक्षण करें?
...
.observeOn(AndroidSchedulers.handlerThread(new Handler(Looper.myLooper())))
...
जो उसी तरह एंड्रॉयड rx मुख्य थ्रेड के लिए अनुसूचक बनाता है का उपयोग कर का उपयोग कर की कोशिश की
MyRetrofitApi.getInstance().getObjects()
.subscribeOn(Schedulers.io())
.observeOn(<current_thread>)
.subscribe(new Subscriber<Object>() {
//do stuff on the sync adapter thread
}
:
रेट्रोफिट + RX जावा के साथ एक उदाहरण नेटवर्क कॉल कि तरह दिखता है लेकिन अब जैसे ही मैं Looper.getMainLooper()
के लिए स्थानापन्न के रूप में Looper.myLooper()
काम नहीं करता।
मैं शेड्यूलर्स.न्यू थ्रेड() का उपयोग कर सकता हूं लेकिन बहुत से सर्वर कॉल के साथ इसके जटिल सिंकिंग कोड के रूप में मैं लगातार नए नेटवर्क कॉल को आग लगाने के लिए एक नया थ्रेड बनाउंगा जो फिर से अधिक नेटवर्क कॉल लॉन्च करने के लिए नए थ्रेड बनायेगा । क्या इसे करने का कोई तरीका है? या मेरा दृष्टिकोण पूरी तरह से गलत है?
इसमें कुछ समय सट्टा उपयोग कर रहा है SyncAdapter के धागे पर सभी काम रखने के लिए ठीक है, तो मैं एक के रूप में इस पोस्टिंग नहीं कर रहा हूँ का जवाब: अब और 2.0 beta2 पर, रेट्रोफिट एक अलग धागे पर नेटवर्क अनुरोध नहीं करता है संस्करण से - यहाँ देखें: https://github.com/square/retrofit/commit/38ce2bee70342ac1ab08115d74802d3a54d85511 तो, आप के वर्तमान संस्करण उपयोग कर रहे हैं रीट्रोफिट आपको बस 'subscribeOn' और' observOn' को पूरी तरह से छोड़ने में सक्षम होना चाहिए और पूरे समय सिंक एडाप्टर थ्रेड पर रहना चाहिए। या मैंने आपके प्रश्न को गलत समझा है और आप नए धागे बनाना चाहते हैं, लेकिन उन्हें बस आपके द्वारा शुरू किए गए धागे पर वापस जाना चाहिए? –