W przypadku najnowszej wersji 2.71828 Oto Twoja odpowiedź.
P1 : Czy nie ma lokalnej pamięci podręcznej na dysku?
A1 : W Picassie istnieje domyślne buforowanie, a przepływ żądań jest taki sam
App -> Memory -> Disk -> Server
Gdziekolwiek napotkają pierwszy obraz, użyją go, a następnie zatrzymają przepływ żądania. A co z przepływem odpowiedzi? Nie martw się, oto jest.
Server -> Disk -> Memory -> App
Domyślnie będą najpierw zapisywać na dysku lokalnym dla rozszerzonej pamięci podręcznej. Następnie pamięć, na przykład użycie pamięci podręcznej.
Możesz użyć wbudowanego wskaźnika w Picasso, aby zobaczyć, gdzie powstają obrazy, włączając tę opcję.
Picasso.get().setIndicatorEnabled(true);
Wyświetli flagę w lewym górnym rogu Twoich zdjęć.
- Czerwony flaga oznacza, że obrazy pochodzą z serwera. (Brak buforowania przy pierwszym załadowaniu)
- niebieski flaga oznacza, że zdjęcia pochodzą z dysku lokalnego. (Buforowanie)
- Zielona flaga oznacza, że obrazy pochodzą z pamięci.(Buforowanie instancji)
P2 : Jak włączyć buforowanie dysku, ponieważ będę wielokrotnie używać tego samego obrazu?
A2 : Nie musisz go włączać. To jest domyślne.
Musisz wyłączyć to, jeśli chcesz, aby obrazy były zawsze świeże. Istnieje 2 sposoby wyłączenia buforowania.
- Ustaw
.memoryPolicy()
na NO_CACHE i / lub NO_STORE a przepływ będzie wyglądał następująco.
NO_CACHE pominie wyszukiwanie obrazów z pamięci.
App -> Disk -> Server
NO_STORE pominie zapisywanie obrazów w pamięci przy pierwszym załadowaniu obrazów.
Server -> Disk -> App
- Ustaw
.networkPolicy()
na NO_CACHE i / lub NO_STORE, a przepływ będzie wyglądał następująco.
NO_CACHE pominie wyszukiwanie obrazów z dysku.
App -> Memory -> Server
NO_STORE pominie zapisywanie obrazów na dysku przy pierwszym załadowaniu obrazów.
Server -> Memory -> App
Nie możesz WYŁĄCZYĆ ani dla całkowitego braku buforowania obrazów. Oto przykład.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Przepływ bez buforowania i przechowywania będzie wyglądał następująco.
App -> Server //Request
Server -> App //Response
Może więc być to konieczne do zminimalizowania użycia pamięci aplikacji.
P3 : Czy muszę dodać uprawnienia do dysku do pliku manifestu systemu Android?
A3 : Nie, ale nie zapomnij dodać pozwolenia INTERNETOWEGO dla twojego żądania HTTP.