栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

齐射json缓存图像无法离线工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

齐射json缓存图像无法离线工作

您的图片(http://www.iremdeveci.com/ornekler/resimler/resim.png)似乎已正确缓存,因为具有etag和cache标头。

但是,您发出的第一个请求(http://sunumsitesi.com/json.php)似乎既不返回缓存头也不返回etag。因此,您有错误甚至没有到达图片部分。

您可以从服务器修复该问题,也可以让Volley缓存所有这些,您需要为其创建自定义请求并覆盖

protected Response<String> parseNetworkResponse(NetworkResponse response)

在您的代码中,这就像

        JsonArrayRequest urunReq = new JsonArrayRequest(jsonUrl, new Response.Listener<JSONArray>()    {        @Override        public void onResponse(JSonArray response)        { String dosyakonum = "http://www.pukkaliving.concept.com/upload/galeri/buyuk/"; hidePDialog(); for (int i = 0; i < response.length(); i++) {     try     {         JSonObject obj = response.getJSonObject(i);         Urun urun = new Urun();         urun.setUrun_adi(obj.getString("urun_adi"));         urun.setUrl("http://www.iremdeveci.com/ornekler/resimler/resim.png");//example         urunList.add(urun);     } catch (JSonException ex)     {         ex.printStackTrace();     } } adapter.notifyDataSetChanged();        }    }, new Response.ErrorListener()    {        @Override        public void onErrorResponse(VolleyError volleyError)        { Toast.makeText(getActivity(), volleyError.getMessage(), Toast.LENGTH_LONG).show();        }    }) {        @Override        protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { try {     String jsonString =  new String(response.data, HttpHeaderParser.parseCharset(response.headers));     long now = System.currentTimeMillis();     Cache.Entry entry = HttpHeaderParser.parseCacheHeaders(response);     entry.ttl = now + 30l * 24 * 60 * 60 * 1000;  //keeps cache for 30 daysentry.softTtl = now + 1 * 24 * 60 * 60 * 1000;  //will not try to refresh for 1 day   return Response.success(new JSonArray(jsonString), entry);     } catch (UnsupportedEncodingException e) {         return Response.error(new ParseError(e));     } catch (JSonException je) {         return Response.error(new ParseError(je));     } }        };        AppController.getmInstance().addToRequestQueue(urunReq);

但是对于NetworkImage视图,您必须自定义ImageLoader,因为这是创建图像请求的对象,然后逻辑是相同的。您必须覆盖“
makeImageRequest”。

例如:

  ...mImageLoader = new ImageLoader(this.mRequestQueue,         new LruBitmapCache()) {    @Override        protected Request<Bitmap> makeImageRequest(String requestUrl, int maxWidth, int maxHeight,         ScaleType scaleType, final String cacheKey) {     return new ImageRequest(requestUrl, new Listener<Bitmap>() {         @Override         public void onResponse(Bitmap response) {  onGetImageSuccess(cacheKey, response);         }     }, maxWidth, maxHeight, scaleType, Config.RGB_565, new ErrorListener() {         @Override         public void onErrorResponse(VolleyError error) {  onGetImageError(cacheKey, error);         }     }){          @Override         public Response<Bitmap> parseNetworkResponse(NetworkResponse response) {  Response<Bitmap> resp = super.parseNetworkResponse(response);  if(!resp.isSuccess()) {      return resp;  }  long now = System.currentTimeMillis();  Cache.Entry entry = resp.cacheEntry;  entry.ttl = now + 30l * 24 * 60 * 60 * 1000;  //keeps cache for 30 days  return Response.success(resp.result, entry);         }        }; }};    ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号