一、OKHttp
Ok 支持 同步形式(阻塞式)一个接一个的 一个任务完成,完成下一个
异步形式(接口回调)在当前线程有新建了一个线程,同时去进行
(1)OK get 异步请求
①获取ok对象
②获取request对象
③获取call对象
④call执行请求
(2)ok post异步请求
① 获取ok对象
②创建请求体
③获取request对象
④获取call对象
⑤call执行请求
(3)请求体
① string Request。create(type,"")
②stream(流) new RequestBody()
③form FromBody.builder().build();
④file
(4)请求头,缓存,超时
请求头; request.head() request.addHeader();
缓存; okHttp.cache(new Cache(file,time))
超时; oktimeout();
二,retrofit2
实质上是okhttp完成,而Retrrfit仅负责网络请求接口的封装
使用步骤:
1.定义类接口
2.实例化Retfoit
3.通过Retrofit实例创建接口服务对象
4.接口服务对象调用接口中的方法,获取call对象
5.call对象执行请求
2,常用注解
(1)请求方式
get
post
(2)参数
field
fieldMap
query
queryMap
(3)请求头
FormUrlEncoded
Header:头
headers:方法
(4)请求路径
path
url
(5)请求体
body
3,OkHttp和Retorfit
Okhttp:
OKHttp是一款高效的HTTP库,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势。OkHttp存在以下的特点:
① 支持HTTP2/SPDY
② socket自动选择最好路线,并支持自动重连
③ 拥有自动维护的socket连接池,减少握手次数
④ 拥有队列线程池,轻松写并发
⑤ 拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩,LOGGING)
⑥ 基于Headers的缓存策略
Retrofit:
Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了。Retrofit框架存在的优势:
① Retrofit使用注解方式,大大简化了我们的URL拼写形式,而且注解含义一目了然,简单易懂;
② Retrofit使用简单,结构层次分明,每一步都能清晰的表达出之所以要使用的寓意;
③ Retrofit支持同步和异步执行,使得请求变得异常简单,只要调用enqueue/execute即可完成;
④ Retrofit更大自由度的支持我们自定义的业务逻辑,如自定义Converters。
⑤ Retrofit支持多种文件解析(Gson,Json,XML,Protobuf)
⑥ Retrofit支持RxJava
## DDL数据定义语言
用于创建、修改、和删除数据库内的数据结构,如:
1.创建和删除数据库(CREATE DATABASE || DROP DATABASE);
2.创建、修改、重命名、删除表(CREATE TABLE || ALTER TABLE|| RENAME TABLE||DROP TABLE);
3.创建和删除索引(CREATEINDEX || DROP INDEX)
DML数据操作语言
修改数据库中的数据,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)
DCL数据控制语言
用于对数据库的访问,如:1:给用户授予访问权限(GRANT);2:取消用户访问权限(REMOKE)
DQL数据查询语言
从数据库中的一个或多个表中查询数据(SELECT)
三,GreenDao使用
GreenDao配置文档
1.在project级别下 dependencies里
配置 classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2’ // add plugin
2.在module级别下配置build.gradle
配置到build.gradle顶部
apply plugin: 'org.greenrobot.greendao' // apply plugin 步骤3
//配置到android模块下
greendao {
//数据库版本号,升级时修改
schemaVersion 1
//生成的DAO,DaoMaster和DaoSession的包路径。默认与表实体所在的包路径相同
daoPackage 'com.example.greendaodemo.db'
//生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
// targetGenDir 'src/main/java'
}
implementation 'org.greenrobot:greendao:3.2.2' // add library
implementation 'org.greenrobot:greendao-generator:3.2.2'
3.编译
4.创建 bean对象,添加注解标签(@Entity @Id)
5.编译 make+project
数据库升级;
(1)复制MigrationHelper到项目,主要通过创建一个临时表,将旧表的数据迁移到新的表中
(2)新建一个类,继承DaoMaster.DerOpenHelper,重写 onUpgeradeDatabase db,int oldVersion,int neVersion()方法,在该方法中使用MigrationHelper进行数据库升级以及数据迁移
然后使用MyOPenHelper替代DapMaster.DerOpenHelper来进行创建数据库等操作
(3)在表实体中,调整其中的变量(表字段),一般就是新增/删除/修改字段,将原本自动生成的构造方法以及set/get方法删除,重写bulide–Make project进行生成
(4)修改Module下build.gradle中数据库的版本号schemaVersion ,递增加1,最后运行app
6.收藏项目
(1)添加依赖 权限
(2)配置GreenDao 创建工具类DbHelper
(3)实现TVF
(4)实现HomeFragment网络列表,包含retrofit使用,点击事件,插入数据
(5)实现CollectionFragment 包含查询数据 viewPager结合Fragment懒加载
四,Rxjava
Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎,RxJava2是非常好用的一个异步链式库.RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发.
本文主要基于Rxjava 2.0
总结:RxJava 是一个 基于事件流、实现异步操作的库
作用实现异步操作
类似于 Android中的 AsyncTask 、Handler作用
特点由于 RxJava的使用方式是:基于事件流的链式调用,所以使得 RxJava:
逻辑简洁
实现优雅
使用简单
更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简洁 & 优雅
4.Rxjava原理;
Rxjava是一个基于事件流、实现异步操作的库,类似于Android中的AsyncTask,Handler的作用。Rxjava是一种扩展的观察者模式,整个模式中有4个角色:
被观察者(Observable),用来产生事件。
观察者(Observer),用来接收事件,并给出响应动作。
订阅(Subscribe),用来连接被观察者和观察者。
事件(Event),作为被观察者和观察者沟通的载体。
Rxjava的执行流程,被观察者(Observable)通过订阅(Subscribe)按顺序发送事件给观察者(Observer),观察者(Observer)按顺序接收事件和作出对应的响应动作。
作者:潇染~