【发布时间】:2015-08-17 07:40:33
【问题描述】:
参考Setting Up a RequestQueue,我构建了一个带缓存的单例类示例,其中:
private RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(mContext.getApplicationContext(), 10 * 1024 * 1024);
}
return mRequestQueue;
}
在 MainActivity.java 中:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(0, mUrl, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
mTextView.setText(response.toString(5));
} catch (JSONException e) {
mTextView.setText(e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
我的情况:
服务器数据值为1234:
- Wifi连接,运行Android应用,获取值:1234
- Wifi断开,运行app,获取值:1234
服务器数据值更新为12345678:
Wifi连接,运行app,获取值:12345678
Wifi断开,运行app,获取值:1234
为什么 Volley 在从服务器获取新数据(与缓存数据不同的数据)时不清除然后更新缓存?如何强制?
【问题讨论】:
-
volley 如何知道服务器上的数据已更新?您需要明确告诉 volley 何时手动清除缓存或清除缓存
-
我认为当它已经获得新数据(即 12345678)时,它会与缓存数据(1234)进行比较,因此它知道数据已更新。对吗?
-
它没有获取新数据 - 它仍然有数据在缓存中,所以它不会进行网络调用。这就是缓存的全部意义所在。对吗?
-
数据更新,wifi连上,新数据!
-
好的,现在我很困惑...... Volley 要么从服务器获取新数据,要么使用缓存。 “我有新数据”是什么意思?
标签: android caching android-volley