【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方法指定

相关推荐
7ioik4 小时前
Explain关键字?
android
海盗12344 小时前
MySQL主从复制的配置方式
android·mysql·adb
liang_jy6 小时前
Android 事件分发机制(二)—— 点击事件透传
android·面试·源码
圆号本昊9 小时前
Flutter Android Live2D 2026 实战:模型加载 + 集成渲染 + 显示全流程 + 10 个核心坑( OpenGL )
android·flutter·live2d
冬奇Lab10 小时前
ANR实战分析:一次audioserver死锁引发的系统级故障排查
android·性能优化·debug
冬奇Lab10 小时前
Android车机卡顿案例剖析:从Binder耗尽到单例缺失的深度排查
android·性能优化·debug
ZHANG13HAO11 小时前
调用脚本实现 App 自动升级(无需无感、允许进程中断)
android
圆号本昊12 小时前
【2025最新】Flutter 加载显示 Live2D 角色,实战与踩坑全链路分享
android·flutter
小曹要微笑12 小时前
MySQL的TRIM函数
android·数据库·mysql