Retrofit2+RxJava2+ButterKnife框架搭建步骤
文章目录
- 步骤攻略:
步骤攻略:
- 添加Retrofit2和RxJava2库的依赖:
- 创建接受服务器返回数据的类(用于处理数据的类)
- 创建用于描述网络请求的接口,并且配置网络请求参数
- 创建Retrofit实例
- 创建网络请求的接口实例
- 发送网络请求(同步,异步)
- 处理服务器返回的数据
##代码解析:
①添加网络权限和依赖,manifest中添加网络请求权限,app下的buildgradle文件添加如下依赖
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
// ① RxJava1.0+Retrofit2的依赖
// compile 'io.reactivex:rxjava:1.1.0'
// compile 'io.reactivex:rxandroid:1.1.0'// ① RxJava2.0+Retrofit2的依赖compile 'io.reactivex.rxjava2:rxjava:2.1.0'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'com.amitshekhar.android:rx2-android-networking:1.0.0'//支持把json解析成Java对象implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:converter-gson:2.3.0'implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
// 以上三个版本号要保持一致implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'implementation 'com.google.code.gson:gson:2.8.2'
②实体类,用于接受数据的实体类(略)
③创建用于描述网络请求的接口,并且配置网络请求参数
只用Retrofit2不用RxJava的接口:
package com.ytf.ppg.rxjava1demo.retrofit2;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;/*** Created by ppg on 2018/3/12.* ③网络请求接口,配置网络请求的参数* 当拥有该实例的对象时会调用call方法* @Query GET方法查询参数,体现在URL中,相当于URL中?后的k-v键值对,url=“******?start=start&count=count”*/public interface MoviesService {@GET("top250")Call<MovieEntity> getTopMovie(@Query("start") int start,@Query("count") int count);
}
使用RxJava的接口:
package com.ytf.ppg.rxjava1demo.retrofit2;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;/*** Created by ppg on 2018/3/12.* ③网络请求接口,配置网络请求的参数* 当拥有该实例的对象时会调用call方法* @Query GET方法查询参数,体现在URL中,相当于URL中?后的k-v键值对,url=“******?start=start&count=count”*/public interface MoviesServiceRxJava {@GET("top250")Observable<MovieEntity> getMovies(@Query("start") int start, @Query("count") int count);
}
④acvitity中实现:
package com.ytf.ppg.rxjava1demo;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import com.ytf.ppg.rxjava1demo.bean.MovieEntity;
import com.ytf.ppg.rxjava1demo.retrofit2.MoviesService;
import com.ytf.ppg.rxjava1demo.retrofit2.MoviesServiceRxJava;import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends AppCompatActivity {@BindView(R.id.mBtn_click)Button mBtn_click;@BindView(R.id.tv_mTv_content)TextView tv_mTv_content;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);}@OnClick(R.id.mBtn_click)public void onClick(){
// getMovies();getMoviewByRxJava();}/*** 只用Retrofit2进行网络请求的方法* (未封装,原生态)*/private void getMovies() {String baseUrl = "https://api.douban.com/v2/movie/";
// ④ 创建Retrofit2的实例Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).build();
// ⑤ 创建网络请求接口MoviesService的实例,并在接口中配置网络请求参数MoviesService moviesService=retrofit.create(MoviesService.class);
// ⑥发送网络请求Call<MovieEntity> call=moviesService.getTopMovie(0,10);call.enqueue(new Callback<MovieEntity>() {@Overridepublic void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {tv_mTv_content.setText(response.toString());}@Overridepublic void onFailure(Call<MovieEntity> call, Throwable t) {tv_mTv_content.setText(t.getMessage());}});}/*** 结合RxJava进行网络请求*/private void getMoviewByRxJava() {String baseUrl = "https://api.douban.com/v2/movie/";// ④ 创建Retrofit2的实例Retrofit retrofit=new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();
// ⑤ 创建网络请求接口MoviesService的实例,并在接口中配置网络请求参数MoviesServiceRxJava moviesServiceRxJava=retrofit.create(MoviesServiceRxJava.class);moviesServiceRxJava.getMovies(0,10).subscribeOn(io.reactivex.schedulers.Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<MovieEntity>() {@Overridepublic void onSubscribe(Disposable d) {Toast.makeText(getApplicationContext(),"执行了onSubscribe()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onNext(MovieEntity movieEntity) {tv_mTv_content.setText( movieEntity.toString());Toast.makeText(getApplicationContext(),"执行了onNext()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(Throwable e) {tv_mTv_content.setText(e.getMessage().toString());Toast.makeText(getApplicationContext(),"执行了onError()方法",Toast.LENGTH_SHORT).show();}@Overridepublic void onComplete() {tv_mTv_content.setText("完成!");Toast.makeText(getApplicationContext(),"执行了onComplete()方法",Toast.LENGTH_SHORT).show();}});}
}
GitHub地址:https://github.com/yangtianfu2018/Retrofit2RxJava2ButterKnife
附:RxJava执行原理图
Retrofit2+RxJava2+ButterKnife框架搭建步骤相关推荐
- JEECG - 基于代码生成器的J2EE智能开发框架 续一: JEECG框架搭建步骤 [更新版]
提醒: A.项目开发环境: MyEclipse6.5 + jdk1.6 + Tomcat6.0 ; B.目前已经测试通过的数据库有MySql5.Oracle10g.SqlServer200 C.建 ...
- SSH(Spring+Struts2+Hibernate)框架搭建步骤(含配置文件以及运行结果)
1.创建web项目 2.导入ssh 所需要的多有jar包,到web-inf下面的lib里面 3.将导入过来的jar包都build--path一下 4.切换到myeclipse database视图中, ...
- [转载]SSH框架搭建详细图文教程
什么是SSH? SSH对应 struts spring hibernatestruts 采用MVC模式,主要是作用于用户交互spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合hiber ...
- pytest接口自动化框架搭建
目录: 一.设计思路-整体框架: 二.具体框架搭建 1.公共方法-common 1.1.yaml_util.py 1.2.excel_util.py 1.4.text_ util.py 1.5.exc ...
- 鸿蒙开发之网络框架搭建,MVP+Retrofit2+okhttp3+Rxjava2+RxHarmony
抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 鸿蒙背景 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在20 ...
- Android MVVM框架搭建(三)MMKV + Room + RxJava2
Android MVVM框架搭建(三)MMKV + Room + RxJava2 前言 正文 一.添加依赖 二.MMKV 1. 初始化 2. 数据存取 3. 使用 三.Room 1. @Entity ...
- python虚拟环境搭建安装flask框架_Flask框架搭建虚拟环境的步骤分析
本文实例讲述了Flask框架搭建虚拟环境的步骤.分享给大家供大家参考,具体如下: 为什么要搭建虚拟环境? 在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装 比如联网安装Flask ...
- SpringMVC框架刘宝宝深度版——Springmvc搭建步骤
搭建步骤两种方法三种样式 第一种样式: 1.创建web项目 2.在lib文件下导入7个jar 3.在web.xml中,配置 ...
- struts2 web应用框架的简单搭建步骤
Struts2 Struts2的工作流程: 在Struts2视图层,获取数据,交给action处理,再返回到视图层. 一.什么是Strues2 Struts2是一个基于MVC设计模式的Web应用框架, ...
- SSM框架搭建的步骤
SSM框架搭建的步骤 1. 导入Spring.SpringMVC.MyBatis的依赖 2. 导入Spring.SpringMVC.MyBatis的配置文件 3. 在Spring的配置文件中配置如下内 ...
最新文章
- linux下给php安装pdo_mysql和zlib以及测试模式的选择(禅道安装过程中遇到的问题)...
- CAS机制中的ABA问题
- LVS-NAT搭建HTTP及HTTPS
- 大学生英语fif测试系统_英语听力解题技巧
- c#获取屏幕上某坐标点的颜色
- python中用来占位的语句是_MySQL / Python-gt;语句中占位符的语法错误?
- 数字信号处理设计与仿真分析
- react自定义鼠标右键菜单
- 排行前五的web3风投公司2022年都投了什么
- 新书上市第13天,在亚马逊Kindle电子书人工智能榜第三,与《未来简史》和李开复《人工智能》同榜
- Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务
- jsp页面转为html5,eclipse 设置jsp页面为HTML5
- Python_oldboy_自动化运维之路_线程,进程,协程(十一)
- 细数红帽linux系统下的各个文件夹作用
- Python文件操作-写文本文件
- dev 服务器调试过程
- 曹政--互联网搜索老师傅
- 简述计算机网络测试和故障诊断的发展趋势,网络测试和故障诊断
- Linux网络编程 入门
- Java--SSH,SSM和Spring Boot框架区别优缺点
热门文章
- GAN 生成对抗网络 10-6 Tips for improving GAN
- 手把手带你搭建一个简单的webpack脚手架(一)
- 10827 - Maximum sum on a torus
- Description Resource Path Location Type Cannot change version of project fac(导入maven项目出现红叉问题)...
- python不合法的布尔表达式,python笔试题22-41
- 关于公布部分非法刊物的通知及冀职改办字[2006]48号
- ruoyi-cloud代码生成(跨数据库)
- 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
- ipad上的游戏服务器无响应,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...
- 手机便签软件哪个好用 手机便签软件推荐