2016-11-08 5 views
-1

인터넷에 연결하면 프레스코에서 SD 카드로 이미지를 다운로드하고 저장하고 싶습니다. 나중에 오프라인 일 때 캐시를 지우더라도 저장된 이미지를 표시하려면 프레스코가 필요합니다. 이것이 가능합니까? 그렇다면 어떻게?안드로이드 이미지를 오프라인으로 한 번 프레스코를 사용하여 다운로드

디스크 캐시에 이미지를 저장하기 만하면 캐시를 지울 때 작동하지 않습니다.

답변

1

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

+0

이 답변 주셔서 감사합니다,하지만 보편적 인 이미지 로더가 내 문제를 해결 한 것 같다 : 프레스코 캐싱 수행 방법에 대한

더 많은 정보를 제공합니다. UIL에서 ".cacheOnDisk (true)"매개 변수를 추가하는 것만으로도 필자가 필요로하는 것입니다. – Ashwin

+0

그리고 UIL의 디스크 캐시는 앱의 내부/외부 캐시 디렉토리가 아닙니까? 캐시를 지우더라도 계속 유지됩니까? –

+0

예, UIL을 사용하여 다운로드 한 이미지는 캐시를 지우더라도 유지됩니다. 내 말은, – Ashwin

1

다운로드 할 때 수동으로 이미지를 디스크에 저장해야합니다. 이미지를 표시 할 때 이미지가 디스크에 있는지 확인하십시오. 그렇지 않으면 url에서 다운로드하고 디스크에 저장하십시오.