Android三剑客之RxJava

RxJava:

a library for composing asynchronous and event-based programs using observable sequences for the Java VM。
(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。

简单点说就是一个:异步操作库。

最主要的优点就是:简洁

Github:
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid

引入依赖:

compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'

现在主要讲一下如何在Retrofit中集成RxJava:

没有集成RxJava时的接口是这样的:

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

集成RxJava后变成这样:

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

没有集成RxJava时是这样用的:

Call<List<Repo>> call= service.listRepos("octocat");
call.enqueue(new Callback<List<Repo>>() {
    @Override
    public void onResponse(Response<List<Repo>> response) {
// 数据
    }
    @Override
    public void onFailure(Throwable t) {
// 异常
    }
});

集成RxJava后是这样用的:

service.listRepos("octocat")
.subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<WeatherJson>() {
            @Override
            public void onCompleted() {
                LogUtils.d("------onCompleted---->");
            }

            @Override
            public void onError(Throwable e) {
                LogUtils.d("-----onError---->" + e.getMessage());
            }

            @Override
            public void onNext(Repo repo) {
                LogUtils.d("-------onNext----->" );
            }

            @Override
            public void onStart() {
                super.onStart();
});

至于RxJava是什么东西,这里先不详细讲解,这里有些网上的资料大家可以看看:

给 Android 开发者的 RxJava 详解
深入浅出RxJava(一:基础篇)
深入浅出RxJava(二:操作符)
深入浅出RxJava(三:响应式的好处)
深入浅出RxJava(四:在Android中使用响应式)