检查Volley是从缓存还是通过网络获得结果

dum*_*azy 17 android caching android-volley

如何检查Volley是从缓存还是从网络获取JsonObjectRequest的结果?

我需要在需要网络连接时显示进度对话框,而不是在从缓存中快速接收结果时显示.

我的请求看起来像这样

volleyQueue = Volley.newRequestQueue(this);
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>(){...stuff}, new Response.ErrorListener(){...errorstuff});
jr.setShouldCache(true);
volleyQueue.add(jr);
Run Code Online (Sandbox Code Playgroud)

tke*_*lly 11

我通过覆盖Request#addMarker并检查是否添加了"cache-hit"标记来完成此操作:

public class MyRequest<T> extends Request<T> {

    protected boolean cacheHit;

    @Override
    public void addMarker(String tag) {
        super.addMarker(tag);
        cacheHit = false;
        if (tag.equals("cache-hit")){
            cacheHit = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)