【Android】Retrofit2和RxJava2新手快速上手

写这篇博客的目的

网上关于Retrofit2和RxJava2的博客特别多,但是内容特别复杂,一上来就讲解很高级的用法

其实我们没必要像高考做题家一样,把每个API都背的滚瓜烂熟

熟悉基本用法,高阶用法需要的时候再逐个了解就行了

因为博客本身是脱离具体应用环境的,很难通过文字把每个点讲得透彻,大可不必太过追求面面俱到

所以这篇博客的主要目的,只是为了讲解一下核心用法,对于不求甚解的新手来说,看完基本已经够用了

Retrofit示例


	OkHttpClient client = null;
	Retrofit.Builder builder = new Retrofit.Builder()
	        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
	        .addConverterFactory(GsonConverterFactory.create())
	        .client(client)
	        .baseUrl(baseUrl);
	Retrofit retrofit = builder.build();
	ApiService service = retrofit.create(ApiService.class);

Retrofit讲解

addCallAdapterFactory 指定Call适配器,用于将Call转换为Flowable

addConverterFactory 只懂Body适配器,用于将Body转换为Bean

client 指定OkHttpClient

baseUrl 指定后台接口根路径

ApiService 指定请求格式和内容

RxJava示例


	Observable<BookListVo> bookListVoObservable = apiService.getBookList();
	Observable<BannerListVo> bannerListVoFlowable = apiService.getBannerData();
	Observable concatFlowable = Observable.concat(bookListVoObservable, bannerListVoFlowable);
	concatFlowable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
	concatFlowable.subscribe(new Observer() {
		@Override
		public void onSubscribe(Disposable disposable) {
		    //开始执行网络请求
		}
		
		@Override
		public void onNext(Object concatVo) {
		    //网络请求执行成功
		}
		
		@Override
		public void onError(Throwable throwable) {
		    //网络请求执行失败
		}
		
		@Override
		public void onComplete() {
		    //所有请求全部执行完毕
		}
	});

RxJava讲解

Observable 封装一个事件,这里是网络请求

Observable.concat 将多个事件串联起来执行

subscribeOn 指定订阅事件的线程,这里是执行网络请求的线程

observeOn 指定接收事件的线程,这里是网络请求执行成功,处理回复数据的线程

subscribe 指定事件订阅者和接收者

onSubscribe 事件被订阅,这里是即将开始执行网络请求

onNext 接收到新事件,这里是网络请求返回数据

onError 接收或处理事件时发生异常,这里是处理网络回复数据异常

onComplete 所有事件全部发送完毕,这个方法要手动调用才会触发

onSubscribe的线程由subscribeOn方法指定

onNext的线程由observeOn方法指定

你可能感兴趣的:(android-疑难杂症研究,android,Retrofit,RxJava)