최신 버전 2.71828에 대한 답변입니다.
Q1 : 로컬 디스크 캐시가 없습니까?
A1 : Picasso 내에 기본 캐싱이 있으며 이와 같은 요청 흐름이 있습니다.
App -> Memory -> Disk -> Server
먼저 이미지를 만난 곳에서 해당 이미지를 사용한 다음 요청 흐름을 중지합니다. 응답 흐름은 어떻습니까? 걱정하지 마세요. 여기 있습니다.
Server -> Disk -> Memory -> App
기본적으로 확장 유지 캐시를 위해 먼저 로컬 디스크에 저장됩니다. 그런 다음 캐시의 인스턴스 사용량에 대한 메모리입니다.
피카소의 내장 표시기를 사용하여 이미지가 형성되는 위치를 확인할 수 있습니다.
Picasso.get().setIndicatorEnabled(true);
사진의 왼쪽 상단에 깃발이 표시됩니다.
- 빨간색 플래그는 이미지가 서버에서 온다는 의미입니다. (첫 번째로드시 캐싱 없음)
- 파란색 플래그는 사진이 로컬 디스크에서 가져온 것을 의미합니다. (캐싱)
- 녹색 플래그는 이미지가 메모리에서 온다는 것을 의미합니다. (인스턴스 캐싱)
Q2 : 동일한 이미지를 여러 번 사용할 것이므로 디스크 캐싱을 활성화하려면 어떻게해야합니까?
A2 : 활성화 할 필요가 없습니다. 기본값입니다.
당신이해야 할 일은 이미지를 항상 신선하게 원할 때 비활성화 하는 것입니다. 비활성화 된 캐싱의 양방향이 있습니다.
- 설정
.memoryPolicy()
에 NO_CACHE 및 / 또는 NO_STORE 및 흐름은 다음과 같이 표시됩니다.
NO_CACHE 는 메모리에서 이미지 검색 을 건너 뜁니다.
App -> Disk -> Server
NO_STORE 는 이미지를 처음로드 할 때 메모리에 저장된 이미지를 건너 뜁니다.
Server -> Disk -> App
- 설정
.networkPolicy()
에 NO_CACHE 및 / 또는 NO_STORE 및 흐름은 다음과 같이 표시됩니다.
NO_CACHE 는 디스크에서 이미지 검색 을 건너 뜁니다.
App -> Memory -> Server
NO_STORE 는 처음 이미지를로드 할 때 디스크에있는 저장소 이미지를 건너 뜁니다.
Server -> Memory -> App
완전히 캐싱 이미지가없는 경우 비활성화 할 수 없습니다. 여기에 예가 있습니다.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
캐싱과 저장이 전혀없는 흐름은 다음과 같습니다.
App -> Server //Request
Server -> App //Response
따라서 앱 스토리지 사용량을 최소화하기 위해 필요할 수도 있습니다.
Q3 : 안드로이드 매니페스트 파일에 디스크 권한을 추가해야합니까?
A3 : 아니요,하지만 HTTP 요청에 대한 INTERNET 권한을 추가하는 것을 잊지 마십시오.