मैं प्रत्यक्ष जो निष्पादित करेंगे एक प्रत्येक 30 सेकंड रेट्रोफिट साथ बाकी-कॉल निम्नलिखित: यह है कि हो सकता हैRxJava: अपवाद और पुन: प्रयास करें (देरी के साथ) बेनकाब
Subscription subscription = Observable.interval(0, REFRESH_INTERVAL, TimeUnit.SECONDS)
.concatMap(new Func1<Long, Observable<Response>>() {
@Override
public Observable<Response> call(Long time) {
return webservice.callRetrofitServiceWithRx(parameter);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new UpdateSuccessAction(), new UpdateErrorAction());
(विशेष रूप से बाकी-कॉल) एक अपवाद फेंक देगा (उदाहरण के लिए कोई इंटरनेट कनेक्शन)।
मैं प्राप्त करने के लिए चाहते हैं क्या:
नमूदार फेंकना चाहिए/अपवाद का पर्दाफाश, ताकि मैं यूआई पर एक त्रुटि संदेश प्रदर्शित कर सकते हैं, लेकिन यह आइटम उत्सर्जन जारी रखना चाहिए (30 सेकंड में पुन: प्रयास) ।
वर्तमान में अनुसंधान
मैं किसी विशेष व्यवहार प्रत्यक्ष अपवाद का उत्सर्जन करता है और बंद हो जाता है काम कर परिभाषित नहीं है (= 30 सेकंड में पुन: प्रयास करें सं)।
यदि मैं पुनः प्रयास ऑपरेटर का प्रयास करता हूं, तो अपवाद निगल जाएगा और खुलासा नहीं होगा, इसलिए मैं UI में कोई त्रुटि प्रदर्शित नहीं कर सकता।
यदि मैं ऑनररेटर ऑपरेटर को आजमाता हूं, तो मैं अपवाद को संभाल सकता हूं, लेकिन जहां तक मुझे पता है, कोई पुनः प्रयास संभव नहीं है।
वर्कअराउंड
मेरे वर्तमान वैकल्पिक हल इस नमूदार में पुन: सब्सक्राइब करने के लिए है, लेकिन मैं अगर किसी को एक और अधिक सुरुचिपूर्ण समाधान है पता करना चाहते हैं।
कूल, बहुत बहुत शुक्रिया! – Christopher