【发布时间】:2016-07-28 23:36:20
【问题描述】:
在使用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);
}
【问题讨论】:
-
问题是为什么你需要返回一个 observable,而显然你不能使用任何 observable?为什么不让 CustomCallback 扩展 Observable 然后将其作为类型返回?当你说你想确保它代理响应时,你想在哪里代理观察者?
-
返回的类型必须是 rx.Observable,而不是子类 github.com/square/retrofit/blob/parent-1.4.0/retrofit/src/main/…
标签: android retrofit rx-java retrofit2