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

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

 更新時(shí)間:2017年09月12日 17:05:37   作者:ckj375  
本篇文章主要介紹了Retrofit + OkHttp緩存處理的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

通過(guò)緩存處理可以有效降低服務(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ú)網(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è)置緩存 10M
Cache 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)) {//沒(méi)網(wǎng)強(qiáng)制從緩存讀取(必須得寫(xiě),不然斷網(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; // 沒(méi)網(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

达拉特旗| 潞西市| 松原市| 大冶市| 台江县| 吐鲁番市| 郁南县| 安岳县| 新建县| 汝南县| 寻乌县| 烟台市| 合山市| 北流市| 穆棱市| 于田县| 什邡市| 合肥市| 西宁市| 都匀市| 黔东| 海晏县| 十堰市| 博客| 道孚县| 区。| 徐水县| 郁南县| 泰和县| 伊宁县| 信阳市| 滦平县| 镇巴县| 江阴市| 佛山市| 中西区| 自治县| 翁牛特旗| 大冶市| 江川县| 大连市|