जब तक आप केवल एपीआई कॉल अनुक्रमित कर रहे हैं, तो आप कॉलबैक के बजाय ऑब्जर्वेबल्स का उपयोग करके और आरएक्स स्ट्रीम समर्थन के साथ उन्हें एक साथ जोड़कर रेट्रोफिट के आरएक्सजेवा समर्थन को नियोजित कर सकते हैं। मैं ज्यादातर एक एपीआई कॉल के दूसरे रूप में परिवर्तित करने के लिए .flatmap() फ़ंक्शन का उपयोग करता हूं।
सबसे पहले मैं कॉलबैक के साथ लोगों के बजाय कॉल के प्रत्यक्ष संस्करण का उपयोग किया जाएगा, जो हो जाएगा: आपके मामले में, यह कुछ इस तरह चाहते हैं
Observable<LoginResponse> login(loginRequest);
Observable<RoutesResponse> getRoutes(routesRequest);
के बाद हम इन दोनों कार्यों हमारे एपीआई में, हम उन्हें RxJava धाराओं के साथ एक साथ जोड़ सकते हैं। यहाँ त्रुटि जाँच के बिना एक है, मैं एक त्वरित उदाहरण के रूप में दिखाने के लिए चलते-फिरते यह लिख रहा हूँ:
public Observable<RoutesResponse> rxGetRoutes(loginRequest, routesRequest) {
final YourAPI mAPI = YourApiProvider.getInstance();
return mAPI.login(loginRequest)
//using flatmap to convert one answer to another answer
.flatmap((Func1) LoginResponse -> {
return mAPI.getRoutes(routesRequest);
});
}
अब आप का पालन करेंगे और सामान्य रूप में इस समारोह के लिए लौट आए प्रत्यक्ष करने के लिए सदस्यता, RxJava थोड़ा सीखने के बाद कर सकते हैं:
rxGetRoutes(loginReq, routesReq)
.observeOn(//the thread you want to observe on)
.subscribe(new Subscriber<RoutesResult>() {
@Override
//the functions of Subscriber you need to override
//where you can also check for errors
//Check RxJava documentation after your IDE completes this area.
});
बस भीतरी वर्गों और प्रत्येक चरण के लिए उपयोग तरीकों ढेर नहीं है? या एक घटना तंत्र का उपयोग करें। – dube