Retrofit 和 RxJava 结合使用
2016-01-08 16:04
357 查看
既然使用了Retrofit ,那么不去使用一下它的RxJava总觉得心有不甘。Ok,既然有了目标,那么就要去实现它!
这里需要注意一点,retrofit的版本要和retrofit对应的adapter-rxjava版本一致,否则,会有意想不到的bug出现。本人就遇到了用beta1的adapter和beta2的retrofit,很正常的,它挂了,说我没有实现抽象类的方法。此处略过几百字的幽怨。。。
创建对应的RESTClient也是需要修改的,需要创建对应的retrofit对象。
调用方法:
使用方法:
对结构框架不太清楚的请看利用Retrofit创建自己的网络框架
全文结束,跟多衍生的还是需要深入的研究RxJava和Retrofit。
Step 1
首先当然去compile需要的类库了。Retrofit要结合Rxjava需要以下的类库:compile 'io.reactivex:rxandroid:1.1.0' compile 'io.reactivex:rxjava:1.1.0' compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
这里需要注意一点,retrofit的版本要和retrofit对应的adapter-rxjava版本一致,否则,会有意想不到的bug出现。本人就遇到了用beta1的adapter和beta2的retrofit,很正常的,它挂了,说我没有实现抽象类的方法。此处略过几百字的幽怨。。。
Step 2
接着我们要创建对应的ApiServices:@POST("toh") Observable<ResponseListEvent> loadListInofsWithRx(@Query("v") String v,@Query("key") String key,@Query("month") int month,@Query("day") int day);
创建对应的RESTClient也是需要修改的,需要创建对应的retrofit对象。
private static final Retrofit sRetrofit_rx = new Retrofit.Builder() .baseUrl(DEFAULT_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build();
调用方法:
public static Observable<ResponseListEvent> queryListEvent(final RequestListEventParams params){ return sHttpService_rx.loadListInofsWithRx(params.v,params.key,params.month,params.day); }
使用方法:
RequestListEventParams params = RESTParamsBuilder.buildRequestListEventParams(mCurrentMonth, mCurrentDay); RESTClient.queryListEvent(params) .subscribeOn(Schedulers.io()) .observeOn(Schedulers.newThread()) .map(new Func1<ResponseListEvent, List<CustomEvent>>() { @Override public List<CustomEvent> call(ResponseListEvent responseListEvent) { CustomEvent[] result = responseListEvent.getResult(); return Arrays.asList(result); } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<CustomEvent>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<CustomEvent> customEvents) { mAdapter.refresh(customEvents); } });
对结构框架不太清楚的请看利用Retrofit创建自己的网络框架
全文结束,跟多衍生的还是需要深入的研究RxJava和Retrofit。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories