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

首頁 > 系統(tǒng) > Android > 正文

Retrofit + OkHttp緩存處理的示例代碼

2019-10-22 18:27:58
字體:
供稿:網(wǎng)友

通過緩存處理可以有效降低服務(wù)器的負(fù)荷,加快APP界面加載速度,提升用戶體驗(yàn)。Retrofit + OkHttp緩存處理流程是這樣的,請(qǐng)求響應(yīng)之后會(huì)在data/data/packageName/cache下建立一個(gè)response文件夾,保存緩存數(shù)據(jù),后續(xù)請(qǐng)求時(shí)若無網(wǎng)絡(luò),則直接讀取緩存內(nèi)容,若有網(wǎng)絡(luò)則從網(wǎng)絡(luò)獲取最新數(shù)據(jù)并緩存。

1.設(shè)置緩存路徑,大小及添加緩存攔截器

//設(shè)置緩存路徑File httpCacheDirectory = new File(CommonApplication.getInstance().getCacheDir(), "responses");//設(shè)置緩存 10MCache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);//創(chuàng)建OkHttpClient,并添加攔截器和緩存代碼OkHttpClient client = new OkHttpClient.Builder()    .addNetworkInterceptor(new CacheInterceptor(CommonApplication.getInstance()))    .cache(cache).build();

2.定義緩存攔截器。若網(wǎng)絡(luò)正常,則緩存有效期1分鐘;若網(wǎng)絡(luò)異常,則緩存有效期6小時(shí)

public class CacheInterceptor implements Interceptor {  private Context mContext;  public CacheInterceptor(Context context) {    mContext = context;  }  @Override  public Response intercept(Chain chain) throws IOException {    Request request = chain.request();    if (NetworkUtils.isNetworkAvailable(mContext)) {//沒網(wǎng)強(qiáng)制從緩存讀取(必須得寫,不然斷網(wǎng)狀態(tài)下,退出應(yīng)用,或者等待一分鐘后,就獲取不到緩存)      request = request.newBuilder()          .cacheControl(CacheControl.FORCE_CACHE)          .build();    }    Response response = chain.proceed(request);    Response responseLatest;    if (NetworkUtils.isNetworkAvailable(mContext)) {      int maxAge = 60; //有網(wǎng)失效一分鐘      responseLatest = response.newBuilder()          .removeHeader("Pragma")          .removeHeader("Cache-Control")          .header("Cache-Control", "public, max-age=" + maxAge)          .build();    } else {      int maxStale = 60 * 60 * 6; // 沒網(wǎng)失效6小時(shí)      responseLatest = response.newBuilder()          .removeHeader("Pragma")          .removeHeader("Cache-Control")          .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)          .build();    }    return responseLatest;  }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜康市| 罗田县| 麟游县| 台湾省| 龙川县| 铜鼓县| 侯马市| 昔阳县| 含山县| 额敏县| 佛学| 自贡市| 青龙| 博湖县| 神木县| 石棉县| 循化| 丰顺县| 吉首市| 玉龙| 铁岭市| 都匀市| 乌什县| 祁东县| 河津市| 神池县| 新绛县| 镇江市| 茶陵县| 南宫市| 麻栗坡县| 玉山县| 合作市| 克拉玛依市| 江口县| 轮台县| 东乌| 宣化县| 三明市| 泸溪县| 辉县市|