国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中如何加載數據緩存

2020-04-11 10:50:04
字體:
來源:轉載
供稿:網友

最近app快完工了,但是很多列表加載,新聞咨詢等數據一直從網絡請求,速度很慢,影響用戶體驗,所以尋思用緩存來加載一些更新要求不太高的數據

首先做一個保存緩存的工具類

import java.io.File; import java.io.IOException; import android.content.Context;import android.os.Environment; import android.util.Log; /** * 緩存工具類 */ public class ConfigCacheUtil { private static final String TAG=ConfigCacheUtil.class.getName(); /** 1秒超時時間 */ public static final int CONFIG_CACHE_SHORT_TIMEOUT=1000 * 60 * 5; // 5 分鐘 /** 5分鐘超時時間 */ public static final int CONFIG_CACHE_MEDIUM_TIMEOUT=1000 * 3600 * 2; // 2小時 /** 中長緩存時間 */ public static final int CONFIG_CACHE_ML_TIMEOUT=1000 * 60 * 60 * 24 * 1; // 1天 /** 最大緩存時間 */ public static final int CONFIG_CACHE_MAX_TIMEOUT=1000 * 60 * 60 * 24 * 7; // 7天 /*** CONFIG_CACHE_MODEL_LONG : 長時間(7天)緩存模式 <br> * CONFIG_CACHE_MODEL_ML : 中長時間(12小時)緩存模式<br> * CONFIG_CACHE_MODEL_MEDIUM: 中等時間(2小時)緩存模式 <br> * CONFIG_CACHE_MODEL_SHORT : 短時間(5分鐘)緩存模式 */ public enum ConfigCacheModel { CONFIG_CACHE_MODEL_SHORT, CONFIG_CACHE_MODEL_MEDIUM, CONFIG_CACHE_MODEL_ML, CONFIG_CACHE_MODEL_LONG; } /** * 獲取緩存 * @param url 訪問網絡的URL * @return 緩存數據 */ public static String getUrlCache(String url, ConfigCacheModel model,Context context) { if(url == null) { return null; } String result=null; String path=Constant.ENVIROMENT_DIR_CACHE + MD5Utils.md5Encrypt(url)+".txt"; File file=new File(path); if(file.exists() && file.isFile()) { long expiredTime=System.currentTimeMillis() - file.lastModified(); Log.d(TAG, file.getAbsolutePath() + " expiredTime:" + expiredTime / 60000 + "min"); // 1。如果系統時間是不正確的 // 2。當網絡是無效的,你只能讀緩存 if(UIUtils.isNetWorkConnected(context)) { if(expiredTime < 0) { return null; } if(model == ConfigCacheModel.CONFIG_CACHE_MODEL_SHORT) { if(expiredTime > CONFIG_CACHE_SHORT_TIMEOUT) { return null; } } else if(model == ConfigCacheModel.CONFIG_CACHE_MODEL_MEDIUM) { if(expiredTime > CONFIG_CACHE_MEDIUM_TIMEOUT) { return null; } } else if(model == ConfigCacheModel.CONFIG_CACHE_MODEL_ML) { if(expiredTime > CONFIG_CACHE_ML_TIMEOUT) { return null; } } else if(model == ConfigCacheModel.CONFIG_CACHE_MODEL_LONG) { if(expiredTime > CONFIG_CACHE_MEDIUM_TIMEOUT) { return null; } } else { if(expiredTime > CONFIG_CACHE_MAX_TIMEOUT) { return null; } } } try { result=FileUtils.readTextFile(file); } catch(IOException e) { e.printStackTrace(); } } return result; } /** * 設置緩存 * @param data * @param url */ public static void setUrlCache(String data, String url) { if(Constant.ENVIROMENT_DIR_CACHE == null) { return; } File dir=new File(Constant.ENVIROMENT_DIR_CACHE); if(!dir.exists() && Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { dir.mkdirs(); } File file=new File(Constant.ENVIROMENT_DIR_CACHE + MD5Utils.md5Encrypt(url)+".txt"); try { // 創建緩存數據到磁盤,就是創建文件 FileUtils.writeTextFile(file, data); } catch(IOException e) { Log.d(TAG, "write " + file.getAbsolutePath() + " data failed!"); e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } /** * 刪除歷史緩存文件 * @param cacheFile */ public static void clearCache(File cacheFile) { if(cacheFile == null) { if(Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { try { File cacheDir=new File(Environment.getExternalStorageDirectory().getPath() + "/gdxz/cache/"); if(cacheDir.exists()) { clearCache(cacheDir); } } catch(Exception e) { e.printStackTrace(); } } } else if(cacheFile.isFile()) { cacheFile.delete(); } else if(cacheFile.isDirectory()) { File[] childFiles=cacheFile.listFiles(); for(int i=0; i < childFiles.length; i++) { clearCache(childFiles[i]); } } } }

已經寫好的一個工具,只需在需要做緩存的地方調用ConfigCacheUtil.getUrlCache方法傳入相應的url,類型和上下文 判斷結果是否為空,如果為空說明不存在緩存請求網絡加載數據。如果不為空說明緩存中有數據直接讀緩存,得到result再處理json數據就ok了

以上內容是針對Android中如何加載數據緩存的方法,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新河县| 文安县| 上蔡县| 开封市| 漾濞| 新邵县| 孝义市| 禹州市| 阿瓦提县| 河北省| 浙江省| 武义县| 乌兰浩特市| 张家港市| 遂溪县| 濉溪县| 静乐县| 万源市| 团风县| 阜新市| 莲花县| 门头沟区| 项城市| 甘谷县| 伊金霍洛旗| 广元市| 利津县| 崇州市| 天气| 伊金霍洛旗| 河北区| 宁德市| 南昌市| 无锡市| 盘山县| 安乡县| 吴旗县| 长乐市| 长寿区| 彭山县| 泾源县|