我没有显示一些代码,因为我没有错误。我知道如何使用Volley将Bitmap / ImageView存储在缓存中。我尝试做同样的事情,但文本。我需要将json保存在缓存中。我从服务器下载我的json。有用 !但是我需要做些什么才能将其保存在缓存中?
这是我的函数谁返回我的json:
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);
}
}
我在多个链接上搜索但是它们都存储了Bitmap。有人知道我该怎么做吗?谢谢!
答案 0 :(得分:0)
对于原始排球,他们依靠http响应标头(例如Cache-Control,Date,Expires,ETag)来缓存,在客户端上很难控制。根据我的经验,除了位图之外,文本响应实际上不需要在内存中缓存,因为它不需要像位图一样快速获取,因此无论是凌空还是我,我们都没有为常见提供缓存请求。我有一个项目调用Netroid,它基于凌空,在以前的版本中,我实现了将常见的基于文本的响应存储到内存缓存中,之后,我意识到常见的请求延迟是可以接受的,而位图延迟是没有的,所以我回滚到原来的凌空实施。
我的项目具有比排序更多的功能,您可以控制DiskBaseCache每个响应条目的过期时间,而不是依赖于响应标头,以及更强大的执行状态回调,如onCache(),onSuccess(),onFailure(), onFinish(),如果你喜欢它,我会很高兴的。