2013-08-12 12 views
5

Używam Google's Volley Library jako mojego projektu do pobierania danych sieciowych;Volley: Jak skonfigurować Cache.Entry

mam założyć RequestQueue

requestQueue = new RequestQueue(new DiskBasedCache(new File(context.getCacheDir(), 
      DEFAULT_CACHE_DIR)), new BasicNetwork(new 
       HttpClientStack(AndroidHttpClient.newInstance(userAgent)))); 

Mam również podklasy żądaniu, a nie dane wracając z siecią dobrze. Mój problem jest z buforowania: w parseNetworkResponse(), która nie jest uwzględniana w moim podklasy żądanie, gdy zgłoszę

return Response.success(list, HttpHeaderParser.parseCacheHeaders(response)); 

HttpHeaderParser.parseCacheHeaders (odpowiedź) zwraca null ponieważ serwer jest skonfigurowany do korzystania z „nie” jego buforowania Nagłówek odpowiedzi ... Niezależnie, czy nadal chciałbym buforować te dane przez zmienną liczbę godzin (prawdopodobnie 24 godziny), Jak mogę to zrobić, tworząc saldo Cache.Entry ... Rozumiem, że URL jest używany jako wartość klucza pamięci podręcznej (i chciałbym, aby był to adres URL).

Podsumowując, ponieważ HttpHeaderParser.parseCacheHeaders (response) zwraca null, chciałbym utworzyć nowy Cache.Entry, który jest ustawiony na wygasanie po 24 godzinach, a kluczem pamięci podręcznej jest adres URL żądania.

Jakieś myśli?

Dzięki!

Odpowiedz

3

miałem ten sam problem, co skończyło się z tego rozwiązania:

@Override 
protected Response<String> parseNetworkResponse(NetworkResponse response) { 

    // Create a FakeCache that invalidate the data after 24 hour 
    Cache.Entry mFakeCache = HttpHeaderParser.parseCacheHeaders(response); 
    mFakeCache.etag = null; 
    mFakeCache.softTtl = System.currentTimeMillis() + 86400 * 1000; 
    mFakeCache.ttl = mFakeCache.softTtl; 

    return Response.success(response.data, mFakeCache); 
} 
+0

skończyło się to zrobić, dziękuję :) – chocospaz