Android 如何使用volley库将JSONArray响应存储在缓存中?
我没有显示一些代码,因为我没有错误。我知道如何使用Volley在缓存中存储位图/ImageView。我也试着这么做,只是为了文字。我需要将json保存在缓存中。我从服务器下载json。它起作用了!但是我需要做什么才能把它保存在缓存中呢 以下是返回json的函数:Android 如何使用volley库将JSONArray响应存储在缓存中?,android,json,performance,caching,android-volley,Android,Json,Performance,Caching,Android Volley,我没有显示一些代码,因为我没有错误。我知道如何使用Volley在缓存中存储位图/ImageView。我也试着这么做,只是为了文字。我需要将json保存在缓存中。我从服务器下载json。它起作用了!但是我需要做什么才能把它保存在缓存中呢 以下是返回json的函数: public void getJSONObjectFromServer(String url, Context context) { RequestQueue myRequestQueue = Volley
public void getJSONObjectFromServer(String url, Context context) {
RequestQueue myRequestQueue = Volley.newRequestQueue(context);
final Map<String, String> mapArray = new HashMap<String, String>();
JsonArrayRequest myJsonArray = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.i("ARRAY RESPONSE", response.toString());
for (int i = 0; i < response.length(); i++) {
try {
JSONObject myResult = response.getJSONObject(i);
Iterator<?> keys = myResult.keys();
while (keys.hasNext()) {
String keyDynamicValue = (String)keys.next();
String currentDynamicValue = myResult.getString(keyDynamicValue);
mapArray.put(keyDynamicValue, currentDynamicValue);
Log.i("[" + keyDynamicValue + "] =", currentDynamicValue);
}
Log.i("JSONOBJECT MYRESULT " + i, myResult.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
myRequestQueue.add(myJsonArray);
}
}
public void getJSONObjectFromServer(字符串url,上下文){
RequestQueue myRequestQueue=Volley.newRequestQueue(上下文);
final Map mapArray=新HashMap();
JsonArrayRequest myJsonArray=newjsonarrayrequest(url,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.i(“数组响应”,RESPONSE.toString());
对于(int i=0;i
我搜索了多个链接,但它们都是用来存储位图的。有人知道我怎么做吗?谢谢大家! 对于原始版本,它们依赖http响应头(如缓存控制、日期、过期、ETag)进行缓存,在客户端很难控制。根据我的经验,除了位图,文本响应实际上不需要缓存在内存中,因为它不需要像位图那样快速获取,因此无论是volley还是我,我们都没有为普通请求提供缓存。我有一个项目调用,它基于volley,在以前的版本中,我实现了将基于文本的公共响应存储到内存缓存中,之后,我意识到公共请求延迟是可以接受的,而不是位图延迟,所以我回滚到原来的volley实现 我的项目有比截取更多的功能,您可以控制DiskBaseCache每个响应项的过期时间,而不是依赖于响应头,以及更强大的执行状态回调,如onCache()、onSuccess()、onFailure()、onFinish(),如果您喜欢,我将很高兴