前言
1、每一种要缓存的数据都是有对应的versionCode,通过versionCode请求网络获取是否需要更新
2、提前将要缓存的数据放入assets文件夹中,打包上线。
缓存设计
代码实现
/**
* Created by huangbo on 2017/6/19.
*
* 主要是缓存的工具类
*
* 缓存设计:
* 0.从内存中读取数据 :0.1 读取成功-> 取出versionCode ->3
* 0.2 读取失败-> 1
*
* 1.从文件中读取数据:1.1读取成成功-> 取出versionCode ->3
* 1.2读取失败-> 2
* 2.从Assets中读取数据:2.1读取成功-> 取出versionCode ->3
* 2.2读取失败-> versionCode==0 ->3
*
* 3.用versionCode请求网络 3.1请求成功(有版本更新)将文件写入内存,写入文件;
* 3.1 请求失败,(没有版本更新)
*
*/
public class CacheData {
public static CacheData cacheData;
public static CacheData getInstance() {
if (cacheData == null) {
cacheData = new CacheData();
}
return cacheData;
}
String mFileName;
public CacheData cacheName(String mFileName) {
this.mFileName = mFileName;
return this;
}
ExecutorService cachedThreadPool;
private CacheData() {
cachedThreadPool = Executors.newCachedThreadPool();
}
/**
* 从assets 中读取文件
*
* @return cacheData 的Json串
*/
private String readDataFromAssets() {
try {
InputStream ips = AppUtils.ApplicationContext.getAssets().open(mFileName);
byte[] bytes = new byte