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中使用响应式)