簡體   English   中英

Android Volley訪問緩存響應數據

[英]Android Volley access caching response data

我正在使用Volley庫訪問服務器數據。Volley具有內置的緩存功能。我嘗試按以下方式使用它。此輸出為“ CACHED RESPONSE”。 但我不知道如何訪問緩存的數據。

 void initHttpCall(){

    RequestQueue queue = Volley.newRequestQueue(mcontext);

    UOBRequest<RateData> myReq = new UOBRequest<RateData>(Method.GET,
                                            Constants.GET_RATES,
                                            RateData.class,
                                            mlistner,
                                            createMyReqErrorListener()){


                            @Override
                            public Map<String, String> getHeaders(){

                            HashMap<String, String> headers = new HashMap<String, String>();
                            headers.put("Authorization", getToken());
                            headers.put("Accept","application/json" );

                            return headers;

                            }



    };

    myReq.setShouldCache(true);
    if(queue.getCache().get(Constants.GET_RATES)!=null){

        System.out.println("CACHED RESPONSE");

        }else{

             queue.add(myReq);
        }


}

}

這是我的響應列表器,想在這里獲取RateData對象。

new Response.Listener<RateData>() {



    @Override
    public void onResponse(RateData rateData) {

        setupCurrencyPager(rateData);
        setLastUpdatedTime();

    }
});

您誤解了Volley的緩存系統的工作方式。 它的優點在於,作為Volley的用戶,您不知道響應來自何處。

當您將新請求添加到RequestQueue ,Volley將檢查該請求是否已經具有緩存的響應。 如果是這樣,並且該響應尚未過期,則會立即返回。 否則,它將進入網絡之外,檢索響應,將其緩存並返回給您。

您不需要最后一個if語句,只需將其添加到隊列中,Volley就會處理其余的事情。

嘗試以下代碼。它將幫助您確定。

請創建您要傳遞到服務器的請求。 JSONObject request = new JSONObject(); request.put(“ user”,“ user2”);

JsonObjectRequest jsObjRequest =新的JsonObjectRequest(Request.Method.POST,URL,請求,新的Response.Listener(){

    @Override
    public void onResponse(JSONObject response) {
        // TODO Auto-generated method stub
        Log.v("response:-"+response);
    }
}, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
    }
});
queue.add(jsObjRequest);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM