와 함께 할 수있다; 이것은 나를 위해 작동하지 않았다.
대신 나는 URL + POST (= 키 값)
내가 다른 POST 데이터와 같은 URL에 한 모든 POST 요청을 캐시 할 수 있었다 그 방법을 반환하는 내 아이 클래스에서 getCacheKey()를 재정의했다 .
캐시 된 요청을 검색하려고 할 때 동일한 방법으로 캐시 키를 구성해야합니다.
public class CustomPostRequest extends Request<String> {
.
.
private Map<String, String> mParams;
.
.
public void SetPostParam(String strParam, String strValue)
{
mParams.put(strParam, strValue);
}
@Override
public Map<String, String> getParams() {
return mParams;
}
@Override
public String getCacheKey() {
String temp = super.getCacheKey();
for (Map.Entry<String, String> entry : mParams.entrySet())
temp += entry.getKey() + "=" + entry.getValue();
return temp;
}
}
당신이 getCacheKey을 사용할 수있는 새로운 요청을 구성 이제까지 때() 먼저 요청 큐에 넣어 전에 캐시 요청에 대한 검색 :
그래서 여기 내 코드의 스냅 샷입니다.
이 정보가 도움이되기를 바랍니다. 당신은 당신이
Map<String, String> params = yourData;
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url,
new Response.Listener<JSONArray>() {
... Needed codes
},
new Response.ErrorListener() {
...
}
){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
@Override
public String getCacheKey() {
return generateCacheKeyWithParam(super.getCacheKey(), params);
}
};
(당신은 당신이 원하는대로 사용할 수 있습니다, 여기 JsonArrayRequest
을 사용하고 있습니다)이 코드를 수행 할 수있는 기존 Request
클래스 중 하나를 사용하지 않으려는 경우 또한
mParams 객체는 어디에 초기화합니까? 도와주세요! –
감사합니다, 당신은 내 목숨을 구했습니다. –
내 시간을 저장했습니다. –