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

写这篇博客的目的

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

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

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

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

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

Retrofit示例

java 复制代码
	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示例

java 复制代码
	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方法指定

相关推荐
HerayChen1 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11231 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小黄人软件1 小时前
android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
android·ide·android studio
dj15402252032 小时前
group_concat配置影响程序出bug
android·bug
周全全2 小时前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist
android·数据库·mysql
- 羊羊不超越 -3 小时前
App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)
android·ios·harmonyos
wk灬丨4 小时前
Android Kotlin Flow 冷流 热流
android·kotlin·flow
千雅爸爸4 小时前
Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)
android