Android Retrofit - 回调与不回调

标签 android retrofit square

我正在分析 android 上的改造,并且有一个关于回调与不使用回调的问题。我的印象是回调仅用于客户可能希望的成功和失败响应。否则我会省略它。这是一个没有回调的改造接口(interface)示例:

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

    公共(public)接口(interface) GitHubService {

    @GET("/users/{user}/repos")

    void listRepos(@Path("user") String user,Callback cb);

返回值的作用是什么?

  1. 我的第二个问题是:回调是否只需要知道请求是成功还是失败,正如我从文档中看到的那样,回调有两种方法:失败和成功。

最佳答案

我想试着回答你的问题

1。你是对的,返回值应该是 void,因为你将从 Callback

得到响应

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

希望这是有用的,干杯!


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

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

所以我想文档确实回答了这个问题,如果您希望异步执行,则需要回调 :D

关于Android Retrofit - 回调与不回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928497/

相关文章:

Android:保护您的私钥

java - 删除 POST 主体 Retrofit 中的可选参数

android - recyclerView.addOnScrollListener - "retrofit pagination with MVVM"正在加载相同的响应/列表

java - 在不使用递归的情况下,如何让我的方格在彼此之后而不是在彼此之上生成?

android - 仅定位市场中运行速度快的 Android 设备

android - FFmpeg 在处理命令时抛出异常

android - 如何将 Edittext 和 Button 添加到具有图标和文本的 Efficient Adapter

java - 无法从匿名类更改变量

c++ - 计算最多包含 K 个(随机放置)的 NxN 矩阵中最大正方形的面积

iOS - 允许我的应用程序的用户从他们自己的客户那里收款吗?