인터넷에 연결하면 프레스코에서 SD 카드로 이미지를 다운로드하고 저장하고 싶습니다. 나중에 오프라인 일 때 캐시를 지우더라도 저장된 이미지를 표시하려면 프레스코가 필요합니다. 이것이 가능합니까? 그렇다면 어떻게?안드로이드 이미지를 오프라인으로 한 번 프레스코를 사용하여 다운로드
디스크 캐시에 이미지를 저장하기 만하면 캐시를 지울 때 작동하지 않습니다.
인터넷에 연결하면 프레스코에서 SD 카드로 이미지를 다운로드하고 저장하고 싶습니다. 나중에 오프라인 일 때 캐시를 지우더라도 저장된 이미지를 표시하려면 프레스코가 필요합니다. 이것이 가능합니까? 그렇다면 어떻게?안드로이드 이미지를 오프라인으로 한 번 프레스코를 사용하여 다운로드
디스크 캐시에 이미지를 저장하기 만하면 캐시를 지울 때 작동하지 않습니다.
Fresco는 이미지를 캐싱합니다. 오프라인 인 경우 이미지가 여전히 표시되어야합니다. 아무 것도 할 필요가 없습니다.
그러나 캐시를 지우면 (예 : 사용자가 버튼을 누르거나 기기 공간이 부족한 경우) 캐시에서 이미지가 분명히 삭제됩니다. 이는 변경해서는 안되는 원하는 동작입니다.
2 개 가지 옵션이 있습니다 : 당신은 (예 : "저장"버튼을) 선택한 이미지을 유지하려는 경우, 당신은 인코딩을 얻을 수
을 선택한 항목을 저장 이미지를 저장하고 장치의 어딘가에 저장하십시오. 은 모든 이미지에 대해 디스크에 2 번 저장되며 캐시를 지우거나 앱을 제거하면 기기에 사본이 1 개 남습니다.
이 같은 뭔가 일할 수 :
DataSource<CloseableReference<PooledByteBuffer>>
dataSource = Fresco.getImagePipeline().fetchEncodedImage(imageRequest, callerContext);
dataSource.subscribe(new BaseDataSubscriber<CloseableReference<PooledByteBuffer>>() {
@Override
protected void onNewResultImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) {
CloseableReference<PooledByteBuffer> encodedImage = dataSource.getResult();
if (encodedImage != null) {
try {
// save the encoded image in the PooledByteBuffer
} finally {
CloseableReference.closeSafely(encodedImage);
}
}
}
@Override
protected void onFailureImpl(DataSource<CloseableReference<PooledByteBuffer>> dataSource) {
// something went wrong
}
}, executorService);
} 인코딩 된 이미지를 얻을 수있는 파이프 라인을 사용하는 방법에 대한
추가 정보 : 캐시를
보관할 이동 http://frescolib.org/docs/using-image-pipeline.html
프레스코는 또한 사용자 정의 DiskCacheConfig
를 제공하고 새로운 DiskCacheConfig.Builder
을 만들 수 있으며 (예 : SD 카드에 하나) 다른 폴더로 경로를 변경 setBaseDirectoryPath(File)
를 호출하고 당신은 또한 setBaseDirectoryName(String)
와 디렉토리 이름을 변경할 수 있습니다 http://frescolib.org/docs/caching.html
다운로드 할 때 수동으로 이미지를 디스크에 저장해야합니다. 이미지를 표시 할 때 이미지가 디스크에 있는지 확인하십시오. 그렇지 않으면 url에서 다운로드하고 디스크에 저장하십시오.
이 답변 주셔서 감사합니다,하지만 보편적 인 이미지 로더가 내 문제를 해결 한 것 같다 : 프레스코 캐싱 수행 방법에 대한
더 많은 정보를 제공합니다. UIL에서 ".cacheOnDisk (true)"매개 변수를 추가하는 것만으로도 필자가 필요로하는 것입니다. – Ashwin
그리고 UIL의 디스크 캐시는 앱의 내부/외부 캐시 디렉토리가 아닙니까? 캐시를 지우더라도 계속 유지됩니까? –
예, UIL을 사용하여 다운로드 한 이미지는 캐시를 지우더라도 유지됩니다. 내 말은, – Ashwin