Android开发 retrofit入门讲解 (RxJava模式)
前言
retrofit除了正常使用以外,还支持RxJava的模式来使用,此篇博客讲解如何使用RxJava模式下的retrofit
依赖
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
//多了三个需要依赖的RxJava
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' //提供 AndroidSchedulers.mainThread()
简单的Demo
创建接口类
public interface RxHttpList { @FormUrlEncoded
@POST("test/login_test")
Observable<LoginBean> login(@Field("number") String number, @Field("password") String password);
}
创建Retrofit
private void initRxHttpBase() {
mRetrofit = new Retrofit.Builder()
.baseUrl("http://doclever.cn:8090/mock/5c3c6da33dce46264b24452b/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
请求网络
private void rxPostHttp() {
RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<LoginBean>() {
@Override
public void onSubscribe(Disposable d) { } @Override
public void onNext(LoginBean loginBean) {
Log.e(TAG, "onNext: 请求成功 code=" + loginBean.getCode());
Log.e(TAG, "onNext: 请求成功 message=" + loginBean.getMessage()); } @Override
public void onError(Throwable e) { } @Override
public void onComplete() { }
}); }
RxJava模式下的取消网络请求
private void rxPostHttp() {
RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<LoginBean>() {
@Override
public void onSubscribe(Disposable d) {
//把Disposable引用到全局就可以用来取消网络请求
// d.dispose();//取消网络请求 } //略......
}); }
end
Android开发 retrofit入门讲解 (RxJava模式)的更多相关文章
- Android开发 retrofit入门讲解
前言 retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习 ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- 使用Ant搭建Android开发环境入门
使用Ant搭建Android开发环境入门 使用Ant搭建Android开发环境,建立android项目 配置Ant环境 下载Ant:http://ant.apache.org/bindownloa ...
- android 开发从入门到精通
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...
- Android开发快速入门(环境配置、Android Studio安装)
Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...
- Android开发 retrofit下载与上传
前言 此博客只讲解retrofit下载与上传的使用,其实与其说是retrofit的下载与上传还不如说,依然是Okhttp的下载与上传.如果你需要了解retrofit入门请查看这篇博客(此博客不在详细讲 ...
- Java ME之Android开发从入门到精通
1. 搭建Android开发环境 方式一:使用ADT插件安装 ADT插件的下载与安装,ADT插件获取网址:http://www.androiddevtools.cn/ 下载好的ADT插件如图所示: 在 ...
- Android开发 MediaPlayer入门_播放本地视频
前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频.(如果你嫌MediaPlayer还是太麻烦可以试试选择Vi ...
随机推荐
- C# WinfForm 控件之dev报表 XtraReport (五) 并排报表
有了前边的基础这个就很简单了,建一个容器报表 在detail,上放两个xrsubReport.再做两个明细报表,分别指定到xrsubreport就可以了
- XVIII Open Cup named after E.V. Pankratiev Stage 5: Eastern Grand Prix
contest link easy: EI medium-easy: BCDGK medium: L medium-hard: AFH A. Artifacts B. Brackets and Dot ...
- C语言typedef
#include <stdio.h> //基本类型 typedef int MyInt; //可以对typedef产生的类型名二次起别名 typedef MyInt MyInt2; // ...
- SetupFactory 许可协议设置
我用的SetupFactory版本是9.1.0 没有汉化 一开始自己也不知道 百度发现有人在问同样的问题但是没解决 自己找了一会偶然发现 界面左侧 Screens->Before Install ...
- json条件查询
完整Demo <html> <head> <script type="text/javascript" src="http://www.w3 ...
- 构建单页Web应用——简单概述
一.开发框架 ExtJS可以称为第一代单页应用框架的典型,它封装了各种UI组件,用户主要使用JavaScript来完成整个前端部分,甚至包括布局.随着功能逐渐增加,ExtJS的体积也逐渐增大,即使用于 ...
- Effective C++之条款2:尽量以const enum inline替换 #define
本文的标题也可以改成“用编译器替换预处理器”: const double AspectRatio = 1.653; //最好使用上述代码替换下述代码: #define ASPECT_RATIO 1.6 ...
- 干货满满!10分钟看懂Docker和K8S
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的容器技术. LXC,就是Linux容器虚 ...
- leetcode-三角形的最大周长
Python解法: class Solution: def largestPerimeter(self, A: List[int]) -> int: A.sort() for i in rang ...
- 报错:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the paren
今天在做Vue的时候,子组件关闭的时候,报如下错误 报错:vue.esm.js?65d7:610 [Vue warn]: Avoid mutating a prop directly since th ...