最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中如何加載數(shù)據(jù)緩存

 更新時間:2016年02月13日 18:35:38   作者:wang_shuai  
這篇文章主要介紹了Android中如何加載數(shù)據(jù)緩存的相關資料,需要的朋友可以參考下

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

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

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 訪問網(wǎng)絡的URL 
* @return 緩存數(shù)據(jù) 
*/ 
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。如果系統(tǒng)時間是不正確的 
// 2。當網(wǎng)絡是無效的,你只能讀緩存 
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 { 
// 創(chuàng)建緩存數(shù)據(jù)到磁盤,就是創(chuàng)建文件 
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]); 
} 
} 
} 
}

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

以上內(nèi)容是針對Android中如何加載數(shù)據(jù)緩存的方法,希望對大家有所幫助。

相關文章

  • Android StatusBar 透明化方法(不同的版本適配)

    Android StatusBar 透明化方法(不同的版本適配)

    本篇文章主要介紹了Android StatusBar 透明化方法(不同的版本適配),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • React-Native之Android(6.0及以上)權限申請詳解

    React-Native之Android(6.0及以上)權限申請詳解

    這篇文章主要介紹了React-Native之Android(6.0及以上)權限申請詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android Room的使用詳解

    Android Room的使用詳解

    這篇文章主要介紹了Android Room的使用詳解,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下
    2021-04-04
  • Android使用RecycleView實現(xiàn)拖拽交換item位置

    Android使用RecycleView實現(xiàn)拖拽交換item位置

    這篇文章主要為大家詳細介紹了Android使用RecycleView實現(xiàn)拖拽交換item位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 支持多項選擇的ExpandableListView

    支持多項選擇的ExpandableListView

    這篇文章主要為大家詳細介紹了支持多項選擇的ExpandableListView,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android開發(fā)之使用ExifInterface獲取拍照后的圖片屬性

    Android開發(fā)之使用ExifInterface獲取拍照后的圖片屬性

    這篇文章主要介紹了Android開發(fā)之使用ExifInterface獲取拍照后的圖片屬性,較為詳細的分析了ExifInterface類操作圖片的具體使用技巧,需要的朋友可以參考下
    2016-01-01
  • 淺談React Native打包apk的坑

    淺談React Native打包apk的坑

    下面小編就為大家?guī)硪黄獪\談React Native打包apk的坑。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android實現(xiàn)給TableLayou繪制邊框的方法

    Android實現(xiàn)給TableLayou繪制邊框的方法

    這篇文章主要介紹了Android實現(xiàn)給TableLayou繪制邊框的方法,涉及Android TableLayou布局控制相關技巧,需要的朋友可以參考下
    2016-03-03
  • Android自定義View繪制貝塞爾曲線的方法

    Android自定義View繪制貝塞爾曲線的方法

    這篇文章主要為大家詳細介紹了Android自定義View繪制貝塞爾曲線的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android開發(fā)實現(xiàn)的Intent跳轉(zhuǎn)工具類實例

    Android開發(fā)實現(xiàn)的Intent跳轉(zhuǎn)工具類實例

    這篇文章主要介紹了Android開發(fā)實現(xiàn)的Intent跳轉(zhuǎn)工具類,簡單描述了Intent組件的功能并結合實例形式給出了頁面跳轉(zhuǎn)、拍照、圖片調(diào)用等相關操作技巧,需要的朋友可以參考下
    2017-11-11

最新評論

应用必备| 黑龙江省| 峨边| 社旗县| 舟曲县| 陆河县| 兴义市| 黄冈市| 阿瓦提县| 同德县| 桐城市| 韶山市| 甘泉县| 漾濞| 平顺县| 奉新县| 剑阁县| 积石山| 个旧市| 航空| 元江| 资源县| 马山县| 永康市| 隆林| 义马市| 柯坪县| 新疆| 紫金县| 乌鲁木齐县| 明星| 安图县| 平罗县| 信阳市| 和静县| 宁阳县| 手游| 仙游县| 山阴县| 孝感市| 郸城县|