2017-01-20 2 views
1

현재 캐시에 비트 맵 이미지를 저장하고 있습니다. 각 비트 맵의 ​​크기는 최대 3MB까지 가능합니다. 나는 을 사용하고 있습니다. 그러나 androids 문서를 읽은 후에 다음을 발견했습니다 :셀프 모니터 캐시 디렉토리

참고 :이 파일들을 삭제하는 시스템에 의존해서는 안됩니다. 캐쉬 파일로 소비하는 공간의 양에 대해 항상 1MB와 같은 최대 값을 가져야하며, 해당 공간을 초과 할 때 파일을 프 i (prune)해야합니다. 그래서

내가 getExternalCacheDir()를 사용하여 내 캐시를 전환 고려하고 있지만, 이것에 대해 ABIT 불확실입니다 :

플랫폼은 항상 자동으로 삭제하지 않을 수 있습니다 따라서 공유 스토리지에서 사용할 수있는 공간을 모니터링하고,하지 않습니다 이 파일들. 앱은 항상이 위치에서 사용되는 최대 공간을 관리해야합니다. 현재 플랫폼에서 삭제할 수있는 유일한 시간은 JELLY_BEAN_MR1 이상에서 실행되고 isExternalStorageEmulated (File)가 true를 반환하는 경우입니다.

파일을 무작위로 삭제하면 내 응용 프로그램의 실행에 영향을 줄 수 있기 때문에 캐시 디렉토리를 완전히 제어하고 싶습니다. 이미 일정 크기의 공간을 초과하지 않도록 캐시 크기의 상한선을 설정했습니다. 이제는 시스템이이 캐시에서 모니터링하고 삭제하는 것을 방지 할 수 있습니까?

감사합니다.

답변

0

캐시가 영구 저장 장치라고 생각하지 마십시오. 당신이 의존하는 파일을 저장해서는 안됩니다. 다시로드하거나 다시 만들고 싶지 않은 데이터를 저장하는 데 사용되는 캐시이지만 필요한 경우 웹에서 사진을로드하는 등의 작업을 수행 할 수 있습니다. 이미 완료 한 경우 디스크에서로드하는 것이 훨씬 빠르지 만 디스크없이 완료 할 수 있습니다. . 이 파일에 실제로 의존하는 경우 getFilesDir()을 사용하면 메모리가 없어도 지워지지 않는 특정 앱 디렉토리로 연결됩니다 (하지만 설정에서 사용자가 지울 수 있음). 또한 정적 인 데이터가 있고 항상 필요로하는 데이터가있는 경우 자산 폴더에 저장해야하며 다른 모든 데이터는 임시로 간주되어야합니다 (사용자 또는 시스템이 해당 데이터를 지울 수있는 경우).

+0

2 가지 질문 1) getFilesDir() 및 여기에 저장된 이미지를 사용하면 미디어 폴더로 사용자에게 표시 될 수 있습니까? (나는 그것을 원하지 않는다). 2)이 자산 폴더에 대한 자세한 정보를 제공 할 수 있습니까? – memoryManagers

+0

1) getFilesDir에 저장된 파일은 사용자가 볼 수 없습니다 (루트 액세스 권한이없는 경우). 따라서 사용자는 쉽게 삭제할 수 없습니다. 그러나 파일을 사용자가 볼 수있게하려면 getExternalStorageDir()이 필요하며 사용자에게 표시되며 쉽게 삭제할 수 있습니다. – Ekalips

+0

2) 애셋 폴더는 항상 앱을 유지할 파일을 저장하는 데 사용됩니다. 그들은 apk 파일로 이미 올 것이다. 사용자는 어쨌든 그것을 삭제할 수 없습니다. 하지만 하나의 단점 - 당신은 파일을 동적으로 배치 할 수 없습니다. 단지 apk 빌드 전에 – Ekalips