您的图片(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); } }; }}; ...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)