Vor der Verwendung von rx.Observable
habe ich einen benutzerdefinierten Rückruf mit Nachrüstung verwendet, so dass ich einige spezifische Logik für die Behandlung von Antwort/Fehler hinzufügen kann und dies nicht innerhalb des Rückrufs für jede Anfrage als Standardcode tun muss.RxJava/Retrofit - Wie kann ich Benutzer zwingen, eine bestimmte Unterklasse von Abonnenten zu verwenden?
ich Benutzer zwingen, die benutzerdefinierte Callback zu verwenden, indem es in der Methodensignatur wie folgt setzen:
@GET("/user_endpoint/")
void getUser(CustomCallback<User> callback);
@GET("/profile_endpoint/")
void getProfile(CustomCallback<Profile> callback);
aber jetzt, dass ich ein Observable
Rückkehr:
@GET("/user_endpoint/")
Observable<User> getUser();
@GET("/profile_endpoint/")
Observable<Profile> getProfile();
Ich kann nicht finde einen Weg, um sicherzustellen, dass ein benutzerdefinierter Callback immer den Fehler/die Antwort angibt.
Kann ich den Benutzer auch mit Retrofit2.0 zwingen, einen benutzerdefinierten Rückruf mit dem zurückgegebenen Objekt Call
zu verwenden?
CustomCallback Referenz:
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);
}
Die Frage ist, warum müssen Sie eine Observable zurückgeben, wenn Sie offensichtlich nicht in der Lage sind, nur eine Observable zu verwenden? Warum nicht CustomCallback Observable erweitern und dann als Typ zurückgeben? Wenn Sie sagen, dass Sie sicherstellen wollen, dass es die Antwort angibt, wo möchten Sie es den Beobachtern vermitteln? –
Der zurückgegebene Typ muss ein rx.Observable sein, keine Unterklasse https://github.com/square/retrofit/blob/parent-1.4.0/retrofit/src/main/java/retrofit/RestAdapter.java#L244 – Prem