rx.Observable
を使用する前に、私はretrofit付きのカスタムコールバックを使用しました。応答/エラーを処理するための特定のロジックを追加し、コールバック内でコールバックコードのようにすべての要求に対してコールバックを行う必要はありません。RxJava/Retrofit - ユーザーにSubscriberの特定のサブクラスを使用させるにはどうすればよいですか?
私はこのようなメソッドのシグネチャにそれを置くことによって、カスタムコールバックを使用するようにユーザに強制:
@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);
}
質問はなぜあなたは観察可能なものを返す必要がありますか? CustomCallbackをObservableに拡張して、これを型として返すのはなぜですか?あなたはそれがプロキシを確実にプロキシしたいと思っているとき、それをどこにプロキシしたいのですか? –
返される型は、サブクラスではなくrx.Observableでなければなりません。https://github.com/square/retrofit/blob/parent-1.4.0/retrofit/src/main/java/retrofit/RestAdapter.java#L244 – Prem