implementation ‘com.github.liujingxing.rxlife:rxlife-rxjava2:2.1.0’ //管理RxJava2生命周期,页面销毁,关闭请求
//rxjava3
implementation ‘io.reactivex.rxjava3:rxjava:3.0.6’
implementation ‘io.reactivex.rxjava3:rxandroid:3.0.0’
implementation ‘com.github.liujingxing.rxlife:rxlife-rxjava3:2.1.0’ //管理RxJava3生命周期,页面销毁,关闭请求
//非必须,根据自己需求选择 RxHttp默认内置了GsonConverter
implementation ‘com.github.liujingxing.rxhttp:converter-fastjson:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-jackson:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-moshi:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-protobuf:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-simplexml:2.6.0’
}
最后,rebuild一下(此步骤是必须的) ,就会自动生成RxHttp类
三部曲解说
到这里相信很多人已经有疑问了
- 如果我想发送Post等其它方式请求呢?
- 文件上传下载及进度的监听呢?
- 我想得到自定义的数据类型呢?
这些如何通过三部曲实现呢?别着急,接下来一一为大家讲解
第一步,确定请求方式
上面例子中,我们调用了RxHttp.get("http://...")
语句,其中get
操作符就代表Get请求。由此,我们可以猜测,发送Post请求,只需要调用post
操作符即可。然而我们只猜对了一半,为啥这么说呢?Post请求中,我们常见的又分为两种,一种的表单形式的Post,另一种是Json字符串形式的Post。为此,RxHttp提供了两个发送Post请求的操作符,分别是postForm
和postJosn
,此时,我们就可以这样发送Post请求
RxHttp.postForm(“http://…”) //发送表单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});
RxHttp.postJson(“http://…”) //发送Json字符串单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});
如果想发送Delete、Put等其它方式的请求,同理,如下:
RxHttp.deleteForm(“http://…”)
RxHttp.deleteJson(“http://…”)
RxHttp.putForm(“http://…”)
RxHttp.putJson(“http://…”)
//其它请求方式同上
最后,我们来看下,RxHttp都提供了哪些请求方式,如下: 其中
get
、postForm
、postJson
上面已经讲过了,其它的同理,这里就不再讲述了。
请求方式确定了,如何添加参数或者头像信息呢?so easy!!!,只需调用add
、addHeader
即可,如下:
RxHttp.postForm(“http://…”) //发送表单形式的Post请求
.add(“key”,“value”) //添加请求参数,该方法可调用多次
.addHeader(“headerKey”,“headerValue”) //添加请求头参数,该方法可调用多次
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});
第二步,确定返回数据类型
上面的asString
操作符代表返回String字符串类型,RxHttp提供了一系列asXXX
操作符,如下:
其中,asBoolean、asInteger、asLong、asString等,很好理解,就是返回基本类型的装箱类型,。这个不就过多讲解。这里我们重点看下
asClass
、asList
、asDownload
这3个操作符。
asClass
显示开发中,我们返回的更多是自定义的数据类型,比如我们想得到一个Student对象,此时,我们就可以用asClass
操作符,如下:
RxHttp.get(“http://…”) //发送Get请求
.asClass(Student.class) //指定返回User类型数据
.subscribe(student -> { //订阅观察者,
//请求成功,这里student就是Student对象
}, throwable -> {
//请求失败
});
asList
然而,如果我们想得到一系列Student对象呢?使用asObject显然行不通,此时就要用到asList
操作符了,如下:
RxHttp.get(“http://…”) //发送Get请求
.asList(Student.class) //指定返回User类型数据
.subscribe(students -> { //订阅观察者,
//请求成功,这里students就是List对象
}, throwable -> {
//请求失败
});
注:asXXX操作符,内部会默认指定请求在
Schedulers.io()
线程执行
asDownload
当我们需要下载文件,就用此操作符,如下:
RxHttp.get(“http://…”) //Get请求
.asDownload(“…/rxhttp.apk”) //使用asDownload操作符,并传入存储路径
.subscribe(s -> {
//下载成功回调,s为文件存储路径
}, throwable -> {
//下载失败回调
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
写在最后
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
上述【高清技术脑图】以及【配套的架构技术PDF】可以点击下面链接免费获取
外链图片转存中…(img-pY5dagTc-1711128942275)]
上述【高清技术脑图】以及【配套的架构技术PDF】可以点击下面链接免费获取
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。