Retrofit2+RxJava
1.定义接口
Observable
interface city {
@GET("openapi/cities")
Observable<City> getCitiesBean();
}
2.Subscriber
Func1 和 Action 的区别在于, Func1 包装的是有返回值的方法。另外,和 ActionX 一样, FuncX 也有多个,用于不同参数个数的方法。FuncX 和 ActionX 的区别在 FuncX 包装的是有返回值的方法。
city.getCitiesBean()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<City, List<City.CitiesBean>>() {
@Override
public List<City.CitiesBean> call(City city) {
return city.getCities();
}
})
.flatMap(new Func1<List<City.CitiesBean>, Observable<String>>() {
@Override
public Observable<String> call(List<City.CitiesBean> citiesBeen) {
return Observable.just(citiesBeen.get(1).getCity_name());
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.v("aaaaaaaaa",s);
}
});
标准应该是subscribe,(new Observer)这样可以得到completed也就是发送完毕的,OnNext执行的操作,以及ERROR报错。Action1是带一个参数,OnNext()的包装。
new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
}
3.取消订阅,Subscriber.unsubcribe();