使用RxAndroid调整进行改造

时间:2016-03-04 09:57:58

标签: android retrofit rx-java rx-android

我使用Retrofit来调用Restful API。我读了一些关于Rx Android的帖子,但我不知道如何在新定义的可观察模式中集成Rx Android和Retrofit。 我推荐链接来自谷歌搜索。但是没有弄清楚如何实现它所以我想要正确的例子或任何要学习的帖子。

1 个答案:

答案 0 :(得分:4)

如果您要切换到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的简单hello世界获取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) {
        // ...
      }
    });