2016-10-13 5 views
2

14 일을 말하도록 이미지를 캐싱해야합니다. 일부 웹 서비스에서 나는 ExpiresActive OnExpiresDefault "access plus 14 days"으로 이것을하기 위해 아파치를 설정할 것이다.며칠 동안 안드로이드에 이미지 캐시

Android에서이 작업을 수행 할 수 있습니까? 물론 이미지를 휴대 전화 저장소에 저장할 수는 있지만 원하는 해결책은 아닙니다.

나는 article (Caching Bitmaps)을 읽었지 만 LruCache을 사용한 다음 finish()을 호출하면 캐시가 파괴 될 것입니다. 맞지 않거나 뭔가 빠졌습니까?

휴대 전화의 저장 공간에 파일을 저장하는 것 외에 다른 해결책이 있습니까?

답변

0

그래서 결국 나는 내가 base64로 이미지 문자열 일부 JSON을

작동 방법 SharedPreferencesFile

를 사용하여 그것을 해결. 7 일 동안이 값을 저장해야합니다. 그래서 json을 File에 쓰고 저장하고 날짜 문자열 (생성 날짜)을 SharedPreferences에 저장합니다.

  1. 사용자가 활동을 날짜가
  2. 가 만료 만료
  3. 선택하면 SP에서
  4. 가져 오기 날짜 열립니다 - HTTP 요청에서 새로운 JSON을 얻을 수 있도록를
  5. 만료! - JSON 파일은
  6. 존재 선택하면
  7. 존재 - 파일에서 json로드
  8. ! 존재 - HTTP 요청에서 새 json을 가져 와서 파일에 저장하고 생성 날짜를 업데이트하십시오.

이것이 올바른 해결책인지 확실하지 않지만 저에게는 효과적입니다.

+0

좋은 분석. 그러나 'Shared Preference' - Date로 저장하지 않는 것이 더 좋을 것이라고 생각합니다. – RoCk

1

하나의 옵션은 UniversalImageLoader입니다. 이것으로 휠을 재발견 할 필요가 없습니다. 다음을 통해 이미지를 캐시 할 수 있습니다.

DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cache.build(); 
ImageLoader.getInstance().displayImage(url, iv, options, 
       new SimpleImageLoadingListener() { 
... 
} 

cacheOnDisk(true)과 같은 다른 옵션도 있습니다. 특정 일 수의 캐시 메커니즘이 필요한 경우에도 문제의 궁극적 인 해결책은 아닙니다. 당신이 Sync Adapter를 사용하는

편집

또 다른 좋은 대안이다. 불행히도 이것은 매우 긴 주제이므로 제공된 링크를 따라 가십시오. 이를 사용하려면 앱에 ContentProvider을 만든 다음 AbstractThreadedSyncAdapter을 구현하는 클래스를 만들어야 할 수 있습니다.

+0

답변 해 주신 데 감사드립니다. 시간을 지정해야합니다 ... – kristyna

+0

다른 옵션을 제공하도록 편집되었습니다. – user1506104

+0

당신의 의지를 보내 주셔서 감사합니다 : 정기 비트 맵 업데이트의 주제는 훌륭하지만 캐싱은 해결되지 않습니다 ... 어쨌든 동기화 어댑터는 +1에 대해 들어 본 적이 없으며 강력한 도구처럼 보입니다. – kristyna

관련 문제