通过 Android 集成进行改造

Retrofit with RxAndroid intigration

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

如果你要切换到 RxAndroid,我建议你从:http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1 开始。在post中,作者解释的很仔细,系列中有4个post

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

来自使用 Observable 从 onNext 获取期望输出的简单问候世界(类似于回调):

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) {
        // ...
      }
    });