2019-06-05 数据库升级

数据库升级

在实际开发当中,我们经常要对数据库进行升级,但GreenDAO默认的DaoMaster.DevOpenHelper在进行数据升级时,会把旧表删除,然后创建新表,并没有迁移旧数据到新表中,从而造成数据丢失,所以使用greendao我们一般不会直接使用DaoMaster.DevOpenHelper,而是自己创建一个类继承DaoMaster.DevOpenHelper

,然后重写onUpgrade方法,在这个方法中使用MigrationHelper创建一个临时表,将旧表的数据迁移到一个新表中,保证缓存数据不会丢失。当然需要用自己继承。

OKhttp使用、有哪些操作,原理和源码详解?

网络请求的框架用于代替HttpurlConnection和httpclient。可以用来文件上传,下载,加载图片,网络请求,是根据build模式(将一个复杂对象的构建与它的表示分离),链式调用,每一个方法的返回值类型都是当前类的对象

优点是:

1.支持同步、异步。

2.缓存响应数据(减少了重复的网络请求)

3.自动重连(底层是Socket,有自动维护的socket连接池,减少了握手次数)

使用:

先用一个构造好的OkHttpClient和Request获取到一个Call,然后执行call的异步或者同步方法取得Response或者处理异常。

五大拦截器:

一、RetryAndFollowUpInterceptor (重定向拦截器)

1.创建 StreamAllocation对socket进行管理,比如连接复用,选择连接自动重连等

2.根据响应码做重定向和重试,重定向时如果地址不一致会释放连接,多重定向为20次,超出抛异常

二、BridgeInterceptor (桥接拦截器)

用来连接用户请求信息和HTTP请求

BridgeInterceptor 在请求阶段,补全httpheader,

在响应阶段保存Cookie

三、Cachelnterceptor(缓存拦截器)

在缓存可用的情况下,读取本地的缓存的数据,如果没有直接服务器读取数据,如果有,首先判断是否有缓存策略

,然后判断是否过期,如果没有过期,直接从缓存中读,如果过期了,你会添加一些之前的头部信息。

注意事项:

      只支持GET方式,并且需要服务器配合,通过header相关的头来控制缓存

      创建OkhttpClient时候需要配置Cache

四、ConnectInterceptor (连接拦截器)

     主要作用是打开了与服务器的链接,正式开启了网络请求。对socket封装,判断连接是否可以重用,除了比较连接当前的host,也可以比较路由信息。最多空闲连接为5,最长空闲时间为五分钟

 五、CallServerInterceptor(读写拦截器)

给服务器写数据和读取数据;写头部信息,写body表单信息等等;

它负责实现网络 IO,所有拦截器都要依赖它才能拿到响应数据。

你可能感兴趣的:(2019-06-05 数据库升级)