2013-08-28 6 views
5

이미지를로드하는 데 picasso 라이브러리를 사용하고 있습니다. 기본 피카소에서는 내부 캐시 메모리를 사용하여 이미지를로드합니다. 그러나 내 앱 구성에 따라 외부 캐시 메모리 (디스크의 캐시)를 사용해야합니다. 는 그래서 피카소의 캐시 메모리에서 이미지를 검색하는 방법은 무엇입니까?

   File httpCacheDir = new File(getApplicationContext().getExternalCacheDir(),"http"); 
       long httpCacheSize = 10 * 1024 * 1024; // 10 MiB 
       HttpResponseCache.install(httpCacheDir, httpCacheSize);} 

피카소가요

디스크에 캐시 코드를 사용했다. 이제 외부 Sd 카드에 이미지를 캐시합니다.

캐시는 sdcard/android/data/packagename/cache/http 에 저장됩니다. 캐시는 ".1", ".0"으로 저장됩니다. 형식 그래서 방금 열어서 ".1"에서 ".jpg"로 변경합니다. 정확한 이미지를 제공합니다. 하지만 프로그래밍 방식으로 어떻게해야합니까? 하지만 피카소 자체 내 이미지를 imageview.but로 이미지를로드하는 내 애플 리케이션에 캐시에 sdcard 직접 이미지로/오프라인 모드에서 배경 무늬로 비트 맵을 설정해야합니까?

+0

파일 경로가 있고 파일 저장소가 .0 또는 .1로 끝나면 파일 이름을 가져 와서 0 또는 1을 jpg로 바꿉니다. –

+0

@Usman Kurd 파일 이름 모양은 다음과 같습니다. 40 단어 이상의 Md5 해시로 암호화. – Asthme

+0

@AndroSelva를 다시 다운로드하지 않거나 배경 화면으로 직접 설정하지 않고 sdcard에 저장합니다. – Asthme

답변

5

당신은 당신의 자신의 Cache 구현을 제공 할 수 있습니다 이미지보기에서 이미지를 배치. 이렇게하면 메모리 캐시에서 직접 비트 맵을 검색하기 위해 호출 할 수있는 추가 메서드를 제공 할 수 있습니다. 자신의 구현을 제공하려면 Picasso.Builder을 사용하십시오. with()을 사용할 때 대부분의 기본값으로 설정되는 정적 싱글 톤 내부 인스턴스를 사용합니다. 대부분의 앱에는 기본값이 필요합니다.

Cache 구현의 참조를 유지하고 직접 상호 작용합니다. Picasso는 로딩/디코딩 및 캐싱을 처리하기위한 것이지만 주위에 빌드 할 수있는 이유가 없습니다.

디스크 캐시에 관해 언급 한 경우 현재 Picasso는이를 지원하지 않습니다. 이는 디스크 계층 캐시가 HTTP 계층에 의해 수행되고 그에 대한 구분을하지 않기 때문에 설계된 것입니다.

하지만 디스크 캐시의 경로를 변경할 수는 있습니다. OkHttpDownloader를 사용하는 경우 Downloader를 구성 할 때 다른 파일을 제공하십시오. 마찬가지로 UrlConnectionDownloader의 경우 확장하여 load() 메서드를 재정의 할 수 있습니다.

+0

안녕 내 질문은 wrong.sdcard 메모리/내부 메모리가 문제가 아니 었어, 나는 외부/직접 cache.access에 액세스하고 싶지 않아 이미지가 imageview에로드 될 때 picasso.when에서 로컬로 액세스하려면, 난 그냥 SD 카드에 이미지를 저장하고 싶습니다. 그것은 가능한가? – Asthme

+0

그럼이 파일을 곧바로 가져오고, 파일을 저장하는 위치를 변경하려고합니다. 대신 내부에있는 파일을 sdcard에 저장하고 싶습니까?OkHttpDownloader를 사용할 수도 있고 원하는 CacheDir에서 전달할 때 만들 수도 있고 UrlConnectionDownloader를 사용하여 확장 한 다음 기본 클래스와 비슷한 load() 메서드를 구현할 수도 있습니다. 내 답변을 업데이트 중입니다. – dnkoutso

+0

나는 1000 개 이상의 갤러리가있는 온라인 갤러리 앱을 만들고 있습니다. 앱 기능은 "홈 화면의 배경 화면으로 설정"및 "SD 카드로 저장"입니다. 이미지가 imageview에로드 될 때마다 사용자가 즉시 "벽지로 설정"또는 "2 SD 카드 저장"을 수행 할 수 있습니다. 내가 캐시 메모리 또는 다른 방법으로 비트 맵에 액세스하려고합니다. 그러나 새 캐시 메모리를 작성하고 검색하는 것은 매우 어렵습니다. 저를 위해서. 피카소 API의 안쪽에 접근하고 싶습니다. 나는 일주일 동안 노력 해왔다. 나를 도와 줘. – Asthme

1

피카소 또한 단지에서 자기를 캐싱을 다운로드 The Corner Square Engineering blog 피카소 핸들에 따르면 Aquery

유사 대상 이미지보기에 배치하고 사용자에게 그 핸들러를 줄 필요가 그것 및 다운로드에 캐싱을 처리하지 그것을 사용하고 Picasso 인스턴스를 만들 때

+0

U r right.u는 외부 디스크 캐시를 사용할 수 있습니다. picasso 또한 ExtenalsdCard에서 캐시를 생성하고 사용 자에게 핸들을 제공합니다. imageview.but에 이미지를 놓습니다. 캐시 메모리에서 sdcard asimges에 저장하고 싶습니다. – Asthme

+0

http://square.github.io/picasso/를 통해 가시나요? –

+0

나중에 나는 많은 연구를했지만. 그러나 해결책을 찾을 수 없었다. – Asthme