如何使用RxJava / Retrofit从服务器获取数据

时间:2018-05-16 18:44:21

标签: android retrofit rx-java

我正面临这样的问题:从服务器获取数据并加载到TextView中。当然,这很简单。但我想用一些新的方法实现它。我开始挖掘RxJava,但发现它通常不用于这么简单的任务,并且应用于操作更复杂的数据流。我对吗?什么是我的任务的最佳实践?

所以我用Retrofit实现了它,但我也看到Rx和Retrofit之间存在紧密关系。用于与Net和Rx交互的第二个通常是异步操作数据吗?

您能否解释一下这些框架之间的区别以及通常如何使用?

提前感谢大家的解答!

1 个答案:

答案 0 :(得分:0)

Retrofit基本上是Android自身对象的抽象。 HttpURLConnection

所以当然不依赖于另一个,我总是建议你学习反应式编程(RxJava),除了在这一点上几乎是一个标准,一旦你掌握了它,你的生活会更轻松。

基本的实现是:

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

// The Retrofit class generates an implementation of the GitHubService interface.

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

GitHubService service = retrofit.create(GitHubService.class);
Each Call from the created GitHubService can make a synchronous or asynchronous HTTP request to the remote webserver.

Call<List<Repo>> repos = service.listRepos("octocat");

如果您希望将RxJavaRetrofit包含/合并,只需简单包含必要的依赖项,而不是返回Call<T>,您将返回Observable<T>,当然是并且处理响应将是Rx方式。

你可以在这里找到一些不错的Rx例子: