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

相关推荐
奔跑吧 android3 分钟前
【android bluetooth 协议分析 07】【SDP详解 2】【SDP 初始化】
android·bluetooth·aosp15·bt·gd·sdp_init
梦否2 小时前
Android 代码热度统计(概述)
android
xchenhao6 小时前
基于 Flutter 的开源文本 TTS 朗读器(支持 Windows/macOS/Android)
android·windows·flutter·macos·openai·tts·朗读器
coder_pig6 小时前
跟🤡杰哥一起学Flutter (三十五、玩转Flutter滑动机制📱)
android·flutter·harmonyos
消失的旧时光-19437 小时前
OkHttp SSE 完整总结(最终版)
android·okhttp·okhttp sse
ansondroider9 小时前
OpenCV 4.10.0 移植 - Android
android·人工智能·opencv
hsx66611 小时前
Kotlin return@label到底怎么用
android
itgather12 小时前
安卓设备信息查看器 - 源码编译
android
whysqwhw12 小时前
OkHttp之buildSrc模块分析
android
hsx66612 小时前
从源码角度理解Android事件的传递流程
android