Android Retrofit - Callback vs no call back

时间:2015-06-19 01:30:40

标签: android retrofit square

我正在分析关于android的改造,并且对回调而不是使用它们有一个问题。我的印象是回调仅用于客户可能想要的成功和失败响应。否则我会省略它。以下是没有回调的改造界面示例:

 public interface GitHubService {
  @GET("/users/{user}/repos")
  List<Repo> listRepos(@Path("user") String user);
}

这是一个回调示例(我希望我没错):

   public interface GitHubService {
  @GET("/users/{user}/repos")
  List<Repo> listRepos(@Path("user") String user,Callback<Repo> cb);
}

我对两件事感到困惑:

  1. 接口中的返回值是List,但对我来说它应该是无效的,因为retrofit将使用gson将json响应转换为Repo POJO。我所要做的就是创建Repo POJO,所以我希望最后一段代码是这样的:

    public interface GitHubService {

    @GET( “/用户/ {用户} /回购”)

    void listRepos(@Path(“user”)String user,Callback cb);             }

  2. 返回值的目的是什么?

    1. 我的第二个问题是:回调只是必须知道请求是成功还是失败,因为我从文档中看到回调有两种方法:失败和成功。

1 个答案:

答案 0 :(得分:1)

我想尝试回答你的问题

1。你是对的,返回值应该是void,因为你会得到Callback

的回复

2。是的,需要Callback来检查请求是否成功,也可以获取服务器响应。

希望这很有用,欢呼!

编辑:您可以使用直接返回值或使用回调来获取响应。引自改造文档网站:

  • 具有返回类型的方法将同步执行。
  • 异步执行要求方法的最后一个参数是回调。

所以我猜文档真的回答了它,如果你想让执行异步,就需要回调:D