Soru Volley önbellek yönetimini devre dışı bırak


Volley önbellek yönetimini devre dışı bırakmamın bir yolu var mı? Uygulamam taşıma katmanını yönetmek için Google Volley kütüphanesini kullanıyor, ancak sunucu Cache-Control üstbilgisini kullanmadığı için kendi önbellek yöneticisi uygulamasına sahibim. Volley önbelleğinin kullandığı alanı kaydetmek istiyorum çünkü tamamen işe yaramaz.

Kolay bir yolu var mı? veya kendi versiyonumu uygulamalıyım RequestQueue?

Herhangi bir öneri takdir edildi.


25
2017-08-15 20:00


Menşei


Bana sorarsan sorun değil ama voleybolun hangi alternatifi uyguladın? SQLLite veya bir AndroidORM kullanıyor musunuz? Belki de sadece kendi dosyalarına yazıyorsun? Teşekkürler :) - Unknownweirdo


Cevaplar:


Eğer voleybolda (örn. StringRequest, JsonRequest, vb.) Uygulanan varsayılan istek sınıflarından herhangi birini kullanırsanız setShouldCache (yanlış) İstek nesnesini RequestQueue volleyine eklemeden hemen önce:

request.setShouldCache(false);
myQueue.add(request);

İstek sınıfının kendi uygulamanız varsa, o zaman arayabilirsin setShouldCache (yanlış) sınıfının kurucusunda.

Bu çözüm, her istek için ayrı ayrı önbelleğe almayı devre dışı bırakır. Volley kitaplığından global olarak önbelleğe almayı devre dışı bırakmak isterseniz, kalıcı olarak mShouldCache Request sınıfında false olarak değişkendir.


63
2017-08-15 20:38



Doğrudan özel isteğime ekledim. Teşekkürler. - Proverbio
Küresel olarak devre dışı bırakmayı düşündüğünüzde, projenizin bir parçası olarak volley kaynak koduna sahip olmak ve mShouldCache'yi false olarak ayarlamak mı istiyorsunuz? ya da başka yollarla mı? - TypingPanda
@TypingPanda Ben, voleybol kütüphanesindeki değişkeni değiştirmeyi kastettim. Bunun nedeni: İstek sınıfının kendi çoklu uygulamanız olabilir. Hepsini önbelleğe almayı devre dışı bırakmak istiyorsanız, bunu yapmak daha az zaman alır. Aksi takdirde, ibrary'deki herhangi bir şeyi değiştirmek istemezseniz, uygulamalarınızın her birinde setShouldCache (false) öğesini arayabilirsiniz. - Hungry Coder
zamanımı kurtardın - bhavesh kaila
Hayat kurtarıcı. Teşekkürler. - Edward


RequestQueue'yu yapıcınızdan oluşturabilir ve NoCache ilk parametre olarak nesne. İkinci parametre seçiminize göre bir ağ aktarımıdır. AndroidHttpClient veya HttpURLConnection.

RequestQueue queue = new RequestQueue(new NoCache(), new BasicNetwork(new HurlStack()));

Daha fazla ayrıntı için bu belgelere bakın.

Belgelere göre, BasicNetwork Volley'nin varsayılan ağ uygulamasıdır.


11
2018-04-02 09:35





request.setShouldCache(false);

GET istekleri için yeterli görünmüyor. Ancak, sıraya eklemeden önce önbelleği temizlemeniz yardımcı görünüyor

myRequestQueue.getCache().clear();

Bunu benim getRequestQueue() Volley singleton'daki yöntem. sıraya dönmeden önce.


6
2018-06-13 13:26



Hiç böyle bir sorun olmadı. Bu cevap için teşekkürler. Her şey önbelleğe alındı, sıraya dönmeden önce önbellek temizlendi. - Abir Hasan