는 사진을 저장된 응용 프로그램입니다.
문제
내 응용 프로그램을 사용하여 매우 많이 사진은 인터넷에서 다운로드 및 캐시에 로컬로 안드로이드 전화입니다.내가 궁금해 무엇이 올바른 방법으로 저장하는 그는 사진.거기에 여러 가지 방법으로 보지 않는 완전 만족합니다.
저장에서도,그들에게 변치 않은 것이 SD 카드에서 폴더를 공개
- 을 사용하는 공간을 늘 해방에 제거
- 사용자가 볼 수 있에 사진 갤러리
- 요구에의 폴더에 sdcard 루트가(당신은 실제로 볼 수 있습니다 그것은 탐색하는 동안 당신의 휴대 전화)
저장에서도,그들에게 변치 않은 것이 SD 카드에서는 비공개 폴더
- 을 사용하는 공간을 늘 해방에 제거
- 비밀리에 공간을 사용하여 SD 카드
저장 안에 그들을 응용 프로그램
- 불면 응용 프로그램의 크기가 너무 많
는 무엇입의 올바른 방법으로 로컬에 저장한 이미지의 내용을 방해하지 않도록 사용자와 두고 쓰레기를 어디서나?
해결책
최상의 솔루션은 사용하는 것입니다.
context.getCacheDir()
이 디렉토리는 애플리케이션에 비공개이며 제거에서 삭제됩니다. 또한 장치가 공간이 부족한 경우 시스템 이이 디렉토리에서 삭제할 수 있습니다.
문서는 다음과 같이 말합니다.
이 파일을 삭제하는 시스템에 의존해서는 안됩니다. 캐시 파일과 함께 소비하는 공간의 양에 대해 항상 1MB와 같은 합리적인 최대 값을 가져야하고 해당 공간을 초과 할 때 해당 파일을 정리해야합니다.
많은 공간이 필요하고 SD 카드를 사용하는 경우
getExternalCacheDir()
대신에. 또한 제거에서 제거되지만 시스템은 외부 스토리지에서 사용 가능한 공간을 모니터링하지 않으므로 공간이 낮은 경우 이러한 파일을 자동으로 삭제하지 않습니다. 이 옵션을 사용하는 경우 외부 스토리지를 사용할 수 있는지 확인해야합니다.
Environment.getExternalStorageState()
글을 쓰기 전에.
다른 팁
MediaScanner에서 이미지를 숨길 수 있습니다 숨겨진 딥에 넣으십시오 (예 : 도트 접두사가있는) : /sdcard/.donotscan/
.
업데이트 : AS 로마 언어는 트위터에 언급했다 파일을 명명 한 경우에도 작동합니다 .nomedia
DIR로.
가장 좋은 방법은 데이터베이스를 사용하는 것입니다.
- 응용 프로그램과 메모리를 폭파시키지 않습니다.
- 응용 프로그램이 제거되면 관련 데이터베이스가 삭제됩니다.
- 응용 프로그램 외에이 파일에 연락 할 수있는 사람은 아무도 없습니다.
업데이트 : 그러나; 데이터 만 캐시하려면 WebKit에 정의 된 캐시 관리자가 있습니다. 캐시미너
전에는 패키지를 사용하지 않았지만 방법은 사용하기가 직접적으로 보입니다.
static boolean cacheDisabled()
static boolean endCacheTransaction()
static CacheManager.CacheResult getCacheFile(String url, Map<String, String> headers)
static File getCacheFileBaseDir()
static void saveCacheFile(String url, CacheManager.CacheResult cacheRet)
static boolean startCacheTransaction()
그리고 당신은에서 사용법을 찾을 수 있습니다 Google 기어스 코드
이게 도움이 되길 바란다.
당신이 경우에 당신은 원하지 않을 사용할 수 다음 데이터베이스를 사용하거나 현지(non-SD)파일(로컬 파일을 삭제에 대한 완전한 제거)등록을 받은'ACTION_DEVICE_STORAGE_LOW'과'ACTION_DEVICE_STORAGE_OK'방송 작업입니다.그런 다음 경우를 알 수 있 응용 프로그램은 너무 많은 공간에 따르면 장치가 필요할 때 시작하는 사진을 삭제.귀하의 응용 프로그램의 크기는 계속 성장할 것입니다,하지만 당신은 것을 관리할 수 있는 성장과 수축.
팁 - SD 카드에 저장하면 MediaScanner가 스캔하고 원하지 않는 사용자 갤러리 (사진)에 나타납니다. 따라서 아마도 전화에 저장하거나 MediaScanner에게 스캔하지 말라고 지시합니다 (빠른 Google 검색 후 불가능합니다.)
응용 프로그램의 개인 디렉토리에 일부 소수를 저장하는 것이 가장 좋습니다. 응용 프로그램이 제거되면 제거됩니다.