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

相关推荐
怪奇云呼军2 小时前
从声音特征到 CRM 回流:闪电智能 Voice Agent 沟通策略自适应系统 v1 实战
android·人工智能·python·音视频·语音识别
一笑的小酒馆5 小时前
Android视频直播播放器简单封装
android
工会代表6 小时前
安卓手机搭建SOCKS5代理教程
android
雨白6 小时前
Android AOP 切面编程实战:优雅地处理全局断网拦截
android·架构
huluang8 小时前
专业级安卓现场取证利器:拍照取证(PaiZaoXue),补齐行业取证工具核心短板
android·数码相机
奇特認8 小时前
MySQL集群技术 4.高可用之组复制 (MGR)
android
阿pin8 小时前
Android随笔-SurfaceFlinger
android·surfaceflinger
洋不写bug8 小时前
JavaComparable、Comparator、Cloneable接口解析,深拷贝浅拷贝详细解析
android·java·开发语言
小孔龙9 小时前
Android 应用间 UI 刷新与合成
android
XiaoLeisj10 小时前
Kotlin Flow:冷流收集、并行订阅、emit 推送、delay 延迟、collect 全量收集与 collectLatest 的实时数据处理
android·kotlin·android jetpack·协程·flow