91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-24 08:15:03 來源:腳本之家 閱讀:265 作者:ckj375 欄目:移動開發

通過緩存處理可以有效降低服務器的負荷,加快APP界面加載速度,提升用戶體驗。Retrofit + OkHttp緩存處理流程是這樣的,請求響應之后會在data/data/packageName/cache下建立一個response文件夾,保存緩存數據,后續請求時若無網絡,則直接讀取緩存內容,若有網絡則從網絡獲取最新數據并緩存。

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

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

2.定義緩存攔截器。若網絡正常,則緩存有效期1分鐘;若網絡異常,則緩存有效期6小時

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)) {//沒網強制從緩存讀取(必須得寫,不然斷網狀態下,退出應用,或者等待一分鐘后,就獲取不到緩存)
      request = request.newBuilder()
          .cacheControl(CacheControl.FORCE_CACHE)
          .build();
    }
    Response response = chain.proceed(request);
    Response responseLatest;
    if (NetworkUtils.isNetworkAvailable(mContext)) {
      int maxAge = 60; //有網失效一分鐘
      responseLatest = response.newBuilder()
          .removeHeader("Pragma")
          .removeHeader("Cache-Control")
          .header("Cache-Control", "public, max-age=" + maxAge)
          .build();
    } else {
      int maxStale = 60 * 60 * 6; // 沒網失效6小時
      responseLatest = response.newBuilder()
          .removeHeader("Pragma")
          .removeHeader("Cache-Control")
          .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
          .build();
    }
    return responseLatest;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳西县| 会昌县| 建昌县| 桦南县| 保山市| 靖州| 厦门市| 枣庄市| 荆门市| 新乡县| 岱山县| 舒兰市| 宝兴县| 厦门市| 富平县| 稻城县| 温州市| 潞西市| 海盐县| 应城市| 昌平区| 湖口县| 马尔康县| 满洲里市| 洛浦县| 天祝| 安陆市| 略阳县| 本溪| 嘉义市| 睢宁县| 合肥市| 榆树市| 嘉兴市| 海原县| 特克斯县| 隆子县| 赤水市| 光山县| 绥棱县| 敖汉旗|