cf 2015-11-19
众所周知Volley框架可以帮助开发者访问网络数据,并对数据进行缓存
创建RequestQueue时设置缓存路径
// 缓存 (这使用的是磁盘缓存) Cache cache=new DiskBasedCache(context.getCacheDir(),1024*1024*10); // 网络栈 http数据通信的具体实现 Network network=new BasicNetwork(new HurlStack()); //创建并启动请求队列 requestQueue=new RequestQueue(cache,network);
Volley会将数据保存到磁盘缓存中
但有时下次访问同样的地址时不会读缓存因为这与服务器传过来的头文件有关
头文件会申明缓存记录的生命周期当过了申明周期就不会读缓存
若头文件没有申明生命周期,则Volley就不会读取缓存,这时候就要我们手动的读取Volley存放在磁盘中的缓存了
if(!isNetworkAvailable(context)){ getFromDiskCache(url); //如果没网,则调取缓存数据‘ if (requestQueue.getCache().get(commentUrl) != null) { //通过url的到缓存的数据 byte[] data = requestQueue.getCache().get(commentUrl).data; } }else{ //有网则从网上更新数据 //……(省略) } }
判断网络是否可用
public static boolean isNetworkAvailable(Context context) { try { ConnectivityManager manger = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manger.getActiveNetworkInfo(); //return (info!=null && info.isConnected()); if(info != null){ return info.isConnected(); }else{ return false; } } catch (Exception e) { return false; } }