【问题标题】:Retrofit with RxAndroid intigration [closed]使用 RxAndroid 集成进行改造 [关闭]
【发布时间】:2016-03-04 09:57:57
【问题描述】:

我使用 Retrofit 来调用 Restful API。我阅读了 Rx Android 的一些帖子,但我不知道如何以新定义的可观察模式将 Rx Android 与 Retrofit 集成。 我指的链接来自谷歌搜索。但没有弄清楚如何实现它,所以我想要适当的例子或任何帖子来学习。

【问题讨论】:

标签: android retrofit rx-java rx-android


【解决方案1】:

如果您要切换到 RxAndroid,我建议您从:http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1 开始。帖子中,作者细心讲解,系列一共4篇。

然后您可以阅读更多关于 Retrofit2 的内容:https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/;有 Call、Observable 和 Future 的例子。

从使用 Observable 从 onNext 获取期望输出的简单 hello world(类似于 Callback):

Observable<String> myObservable = Observable.create(
    new Observable.OnSubscribe<String>() {
        @Override
        public void call(Subscriber<? super String> sub) {
            sub.onNext("Hello, world!");
            sub.onCompleted();
        }
    }
);

Subscriber<String> mySubscriber = new Subscriber<String>() {
    @Override
    public void onNext(String s) { System.out.println(s); }

    @Override
    public void onCompleted() { }

    @Override
    public void onError(Throwable e) { }
};

myObservable.subscribe(mySubscriber);
// Outputs "Hello, world!"

然后我们可以像这样实现 Retrofit2:

interface GitHubService {
  @GET("/repos/{owner}/{repo}/contributors")
  Observable<List<Contributor>> repoContributors(
      @Path("owner") String owner,
      @Path("repo") String repo);
}

Subscriber<List<Contributor>> repoSubscriber = new Subscriber<List<Contributor>>() {
    @Override
    public void onNext(List<Contributor> list) { 

         // do something with the list 
    }


    @Override
    public void onCompleted() { }

    @Override
    public void onError(Throwable e) { }
};

gitHubService.repoContributors("square", "retrofit")
    .subscribe(repoSubscriber);

您可以使用 Action1 以及订阅者。

gitHubService.repoContributors("square", "retrofit")
    .subscribe(new Action1<List<Contributor>>() {
      @Override public void call(List<Contributor> contributors) {
        // ...
      }
    });

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 我编辑了我的答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-09-08
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多