如何从改造响应中管理大量回调?

时间:2015-10-07 05:25:28

标签: retrofit

在获得单个活动的响应时,我们必须编写大量回调,并且必须获取这些代码的 onResponse() onFailure()。是否有任何可管理的方式,以便我们可以使用唯一的 onFailure() onReponse()来覆盖单个回调?

例如

  private void fetchMoviesFromWeb(int pageNumber, String moviesCategories) {
        Callback<MoviesInfo> moviesInfoCallback = new Callback<MoviesInfo>() {
            @Override
            public void onResponse(Response<MoviesInfo> response) {

                }


            @Override
            public void onFailure(Throwable t) {

            }
        };
        retrofitManager.getMoviesInfo(moviesCategories, pageNumber, Constants.API_KEY, moviesInfoCallback);
    }

/************** **********/
private void fetchMoviesCommentFromWeb()
{

 Callback<MoviesComment> moviesInfoCallback = new Callback<MoviesComment>() {
                @Override
                public void onResponse(Response<MoviesComment> response) {

                    }


                @Override
                public void onFailure(Throwable t) {

                }
            };
            retrofitManager.getMoviesInfo(moviesCategories, pageNumber, Constants.API_KEY, moviesInfoCallback);
}

1 个答案:

答案 0 :(得分:1)

当你只需要两种方法中的一种时,你可以将这两种方法实现为no-op并从该回调中扩展:

public abstract class AbstractCallback<T> implements Callback<T> {
    @Override
    public void onFailure(Throwable t) {
        // ignore by default
    }

    @Override
    public void onResponse(Response<T> response) throws IOException {
        // ignore by default
    }
}

Callback<MoviesComment> moviesInfoCallback = new AbstractCallback<MoviesComment>() {
    @Override
    public void onFailure(Throwable t) {
        // only do something with the failure
    }
}