Board logo

标题: Picasso使用简介及分析(8) [打印本页]

作者: look_w    时间: 2019-2-18 19:56     标题: Picasso使用简介及分析(8)

9.以网络图片为例介绍下从硬盘和网络加载图片的流程

    @Override
    public Response load(Uri uri, int networkPolicy) throws IOException {  
      CacheControl cacheControl = null;  
      if (networkPolicy != 0) {   
        //只走本地缓存
        if (NetworkPolicy.isOfflineOnly(networkPolicy)) {      
            cacheControl = CacheControl.FORCE_CACHE;   
          } else {   
            //自定义缓存策略   
            CacheControl.Builder builder = new CacheControl.Builder();      
            //不从硬盘读
            if (!NetworkPolicy.shouldReadFromDiskCache(networkPolicy)) {   
               builder.noCache();      
              }      
            //不写入硬盘
            if (!NetworkPolicy.shouldWriteToDiskCache(networkPolicy)) {
               builder.noStore();      
             }      
            cacheControl = builder.build();   
         }  
      }  
      Request.Builder builder = new Request.Builder().url(uri.toString());  
      if (cacheControl != null) {   
        builder.cacheControl(cacheControl);  
      }  
      //重点:调用okhttp或者UrlConnection来执行bitmap的下载任务(拦截器)。
      okhttp3.Response response = client.newCall(builder.build()).execute();  
      int responseCode = response.code();  
      if (responseCode >= 300) {   
         response.body().close();   
        throw new ResponseException(responseCode + " " + response.message(), networkPolicy,        responseCode);  
        }  
      boolean fromCache = response.cacheResponse() != null;  
      ResponseBody responseBody = response.body();  
      return new Response(responseBody.byteStream(), fromCache, responseBody.contentLength());
     }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0