android studio 网络获取数据,三级缓存框架

android studio 网络获取数据,三级缓存框架

为什么要三级缓存
有时候Android应用中要获取比较大的数据,比如说图片流,短视频流等,如果每次都从网络上去请求,那么响应速度很慢的,用户体验不好。

二级缓存(多了个数据库)
如果把服务器拉下来的数据保存在本地数据库中,在服务器数据并没有发生改变的时候,直接从本地中获取数据,这就是Android中的二级缓存,比直接每次从服务器中拉取数据多了本地的存储。二级缓存原理如下图:
在这里插入图片描述
由上图可知,在二级缓存中,Android中的activity请求数据时,都是先从本地数据库中拿数据,当然activity并不知道管获取的数据是从本地数据库中还是服务器中,本地数据和服务器数据可以统一为数据源。当服务器数据有改变的时候会从服务器中拉取数据,但是拉取的数据先存在本地数据库中然后再由本地数据库返回给activity。

二级缓存缺点
二级缓存的缺点是每次activity的数据都要从本地数据库中获取,虽然从本地数据库中获取的数据速度要比从服务器获取的速度快,但是每次读写数据库进行的IO操作也是很花费时间的。

三级缓存(再多一个内存)
三级缓存在二级缓存的基础上加了一个内存。从服务器获取的数据库除了存在本地数据库中,同时在内存中也保存一份,这样当activity请求数据时可以先从内存中获取数据,如果内存中没有数据,或者内存中数据已经脏了的情况下,取本地数据库中的数据。当本地数据库的数据也脏了的情况下取服务器数据。取回的数据存一份本地数据库,存一份内存中。三级缓存原理如下图:
在这里插入图片描述
上面的图画的比较乱,流程是:当activity要请求数据时1、先检查内存中缓存数据如果内存中有数据并且数据不脏时直接返回内存中的数据。2、如果内存中无数据并且数据不为脏时向本地数据库中请求数据,并且将请求的数据写入到内存中,再将内存中的数据返回。3、如果内存和本地数据库中都没有数据返回,也就是内存中无数据并且数据为脏时,向服务器请求数据,服务器返回的数据,保存到本地数据库并且保存一份到内存,最后将内存中的数据返回。

三级缓存实现
由三级缓存的原理可以实现三级缓存的框架,数据的来源有三个地方,内存,本地数据库,服务器,但是应用层并不关心数据来自哪里,所以要定义一个数据仓库,里面处理数据逻辑,当activity请求数据时直接由数据仓库来返回数据。定义数据仓库之前可以定义一个数据来源接口,这个接口定义数据的操作,比如插入数据,删除数据,返回数据等。类图:

服务器有数据更新就会下发到数据库,再发给缓存,最后更新activity(这个缓存可能是内存,也可以是其他的,根据具体写的框架分析)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值