Android高级笔记

一、OKHttp

  1. 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();

  1. response.body().string() 只能调用一次

二,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

  1. Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎,RxJava2是非常好用的一个异步链式库.

RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发.

本文主要基于Rxjava 2.0

总结:RxJava 是一个 基于事件流、实现异步操作的库

  1. 作用

实现异步操作

类似于 Android中的 AsyncTask 、Handler作用

  1. 特点

由于 RxJava的使用方式是:基于事件流的链式调用,所以使得 RxJava:

逻辑简洁

实现优雅

使用简单

更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简洁 & 优雅

4.Rxjava原理;

Rxjava是一个基于事件流、实现异步操作的库,类似于Android中的AsyncTask,Handler的作用。Rxjava是一种扩展的观察者模式,整个模式中有4个角色:

被观察者(Observable),用来产生事件。
观察者(Observer),用来接收事件,并给出响应动作。
订阅(Subscribe),用来连接被观察者和观察者。
事件(Event),作为被观察者和观察者沟通的载体。
Rxjava的执行流程,被观察者(Observable)通过订阅(Subscribe)按顺序发送事件给观察者(Observer),观察者(Observer)按顺序接收事件和作出对应的响应动作。

你可能感兴趣的:(Android)