rx.Observable
का उपयोग करने से पहले, मैंने रेट्रोफिट के साथ एक कस्टम कॉलबैक का उपयोग किया ताकि मैं प्रतिक्रिया/त्रुटि को संभालने के लिए कुछ विशिष्ट तर्क जोड़ सकूं और बॉयलरप्लेट कोड के रूप में प्रत्येक अनुरोध के लिए कॉलबैक के अंदर ऐसा नहीं करना पड़ेगा।आरएक्सजेवा/रेट्रोफिट - मैं उपयोगकर्ताओं को सब्सक्राइबर के विशिष्ट उप-वर्ग का उपयोग करने के लिए कैसे मजबूर कर सकता हूं?
मैं इस तरह विधि हस्ताक्षर में इसके सामने कस्टम कॉलबैक उपयोग करने के लिए उपयोगकर्ताओं को बाध्य:
@GET("/user_endpoint/")
void getUser(CustomCallback<User> callback);
@GET("/profile_endpoint/")
void getProfile(CustomCallback<Profile> callback);
लेकिन अब है कि मैं वापस आ रहा हूँ एक Observable
:
@GET("/user_endpoint/")
Observable<User> getUser();
@GET("/profile_endpoint/")
Observable<Profile> getProfile();
मैं नहीं कर सकता यह सुनिश्चित करने के लिए एक तरीका पता लगाएं कि कस्टम कॉलबैक हमेशा त्रुटि/प्रतिक्रिया को प्रॉक्सी करता है।
इसके अलावा, retrofit2.0 के साथ, मैं उपयोगकर्ता को Call
ऑब्जेक्ट के साथ कस्टम कॉलबैक का उपयोग करने के लिए कैसे मजबूर कर सकता हूं? संदर्भ के लिए
CustomCallback:
public abstract class CustomCallback<T> implements Callback<T> {
@Override public final void success(T t, Response response) {
// do some logic
onSuccess(t);
}
@Override public final void failure(RetrofitError error) {
// do something with the error here such as show a Toast
Toast.makeText(Application.getInstance(), error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
onFailure(error);
}
public abstract void onSuccess(T response);
public abstract void onFailure(Throwable error);
}
प्रश्न यह है कि आपको एक अवलोकन करने की आवश्यकता क्यों है, जब आप मोटे तौर पर किसी भी अवलोकन योग्य का उपयोग नहीं कर पा रहे हैं? क्यों कस्टमकॉलबैक पर्यवेक्षण का विस्तार नहीं करते हैं और फिर इसे इस प्रकार के रूप में वापस करते हैं? जब आप कहते हैं कि आप यह सुनिश्चित करना चाहते हैं कि यह प्रतिक्रिया को प्रॉक्सी करता है, तो आप पर्यवेक्षकों को कहां से प्रॉक्सी करना चाहते हैं? –
लौटा हुआ प्रकार एक आरएक्स होना चाहिए। ऑब्सर्वेबल, उप-वर्ग नहीं है https://github.com/square/retrofit/blob/parent-1.4.0/retrofit/src/main/java/retrofit/RestAdapter.java#L244 – Prem