2013-08-05 18 views
5

Usługa, której używam do uzyskania obrazów, podobnie jak wiele takich witryn nie ma nagłówka kontrolki pamięci podręcznej wskazującego, jak długo obraz ma być buforowany. Volley używa domyślnie nagłówka kontroli pamięci podręcznej http, aby zdecydować, jak długo należy buforować obrazy na dysku. Jak mogę przesłonić to domyślne zachowanie i przechowywać takie obrazy przez określony czas?Jak zmienić domyślne zachowanie pamięci podręcznej dysku w siatkówce?

Dzięki

Odpowiedz

11

Musiałem zmienić domyślny strategii buforowania do „cache wszystko” polityki, bez uwzględnienia nagłówków HTTP.

Chcesz buforować przez określony czas. Można to zrobić na kilka sposobów, ponieważ w kodzie jest wiele miejsc, które "dotykają" odpowiedzi sieci. Proponuję zmienił do HttpHeaderParser (parseCacheHeaders sposobu na linii 39):

Cache.Entry entry = new Cache.Entry(); 
entry.data = response.data; 
entry.etag = serverEtag; 
entry.softTtl = softExpire; 
entry.ttl = now; // **Edited** 
entry.serverDate = serverDate; 
entry.responseHeaders = headers; 

a co innego Cache.Entry zajęć:

/** True if the entry is expired. */ 
public boolean isExpired() { 
    return this.ttl + GLOBAL_TTL < System.currentTimeMillis(); 
} 

/** True if a refresh is needed from the original data source. */ 
public boolean refreshNeeded() { 
    return this.softTtl + GLOBAL_TTL < System.currentTimeMillis(); 
} 

gdzie GLOBAL_TTL jest stałą reprezentującą żądany czas każdy obraz, aby żyć w pamięć podręczną.

Powiązane problemy