Przed użyciem rx.Observable
użyłem niestandardowego wywołania zwrotnego z doposażeniem, więc mogę dodać określoną logikę do obsługi odpowiedzi/błędu i nie muszę tego robić w oddzwanianiu dla każdego żądania, jako kod tablicy.RxJava/Retrofit - Jak zmusić użytkowników do korzystania z określonej podklasy subskrybenta?
I zmusić użytkowników do korzystania z niestandardowych zwrotnego poprzez umieszczenie go w sygnaturze metody tak:
@GET("/user_endpoint/")
void getUser(CustomCallback<User> callback);
@GET("/profile_endpoint/")
void getProfile(CustomCallback<Profile> callback);
ale teraz, że jestem zwrócenie Observable
:
@GET("/user_endpoint/")
Observable<User> getUser();
@GET("/profile_endpoint/")
Observable<Profile> getProfile();
nie mogę wymyślić sposób, aby upewnić się, że niestandardowe oddzwanianie zawsze prosi o błąd/odpowiedź.
Również, z retrofit2.0, jak mogę zmusić użytkownika do korzystania z niestandardowego wywołania zwrotnego ze zwróconym obiektem Call
?
CustomCallback dla odniesienia:
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);
}
Pytanie brzmi: dlaczego powinieneś zwrócić obserwowalne, a gdy nie jesteś w stanie użyć żadnego obserwowalnego? Dlaczego nie chcesz, aby CustomCallback był rozszerzalny, a następnie zwracany jako typ? Kiedy mówisz, że chcesz mieć pewność, że to odpowiedź, do której z nich chcesz się zwrócić, do obserwatorów? –
Zwrócony typ musi być rx.Observable, a nie podklasą https://github.com/square/retrofit/blob/parent-1.4.0/retrofit/src/main/java/retrofit/RestAdapter.java#L244 – Prem