안드로이드

내부 저장소 외부 저장소 간단정리

강한 맷돼지 2024. 5. 2. 11:10

회사에서 짬나서 글을 오랫만에 쓸수 있게 되었다.

 

사실 별 내용은 아니지만 가끔 쓸일이 있을때마다 아른아른한 내부저장소 외부 저장소에 대해 사용에 꼭 필요한 내용만 글로 정리해보려한다.

 

뭐 리마인드 용이니까 자세한 내용은 구글링이 필요할것이다.

 

직면한 상황

- 캡쳐한 이미지를 액티비티간 전달해야하는 상황이 생김

- Intent 를 통한 데이터 전달은 1MB 용량제한이라는데 사실상 이것보다도 작음(간당간당하게 맞추면 CS로 혼나는 날 볼수 있음)

- 즉 Intent로 이미지 전달은 애매함 + 이미지를 메모리에 올려놓는것도 부담스러움(여러장이면 메모리를 얼마나 먹는겨)

- 결론: 저장했다가 빼와야겠네 어디다 저장하지?

 

 

내부 저장소 VS 외부저장소

내부 저장소 외부 저장소의 차이: 어플리케이션의 소유권 여부에 따라서  구분된다.

 

내부 저장소

  1. 내부 저장소 접근에 필요한 권한이 없으므로 간단한 작업에 용이하다.
  2. 파일을 외부 어플리케이션과 공유하지 않는 경우에 용이하다.
  3. 큰 메모리가 요구 되지 않는 상황에 용이하다.
  4. 저장한 내용이 애플리케이션을 지울때 같이 날아가도 상관없는 경우 용이하다.

내부 저장소내 Cache, File의 차이

 

→ Cache Directory

내부 저장소에 할당된 Cache 디렉토리에 저장한다.

이곳은 시스템 저장공간이 부족할 때 시스템에 의해 자동으로 삭제 될 수 있다.

즉 추가적인 관리가 필요없는 대신 임시 저장등의 용도로 적합하다.

 

→ File Directory

내부 저장소에 files 디렉토리에 저장된다.

사용자의 데이터를 반영구적(개발자가 직접 삭제 혹은 유저가 직접삭제) 으로 보존한다.

즉 오래동안 데이터를 보존해야하는 경우 사용이 적합하다.

 

 

외부 저장소

  1. 큰 메모리를 사용해야 할 떄 용이하다.
  2. 다른 어플리케이션과 데이터를 공유해야할 때 용이하다.
  3. 내 어플리케이션을 지워도 결과물이 남아 있어야할 때 용이하다.

 

OnMemory

 

앱을 구동할때 메모리에 데이터를 얹어서 사용하기 때문에 굉장히 빠르다.

→ 앱의 리소스를 많이 잡아먹으므로 배제.

 

결론: 상황에 맞춰서 사용하면 된다.

예시로 현 상황에서는 뭐가 적절한지 살펴보면 캡쳐 저장 및 전달은 임시 파일의 성향이 크기 때문에 내부 저장소 Cache directory를 사용하는것이 적합하다.

 

버전에 따라 읽기 쓰기 권한 같은게 좀 달라진 부분이있으니 (Q버전을 기점으로 변경) 사용할 때 권한문제만 체크해보자
-> 저장하는 방법론도 좀 바뀜

 

내부 저장소에 넣는 코드는 회사 유틸 코드가 이미 있을테니 그걸 쓰면 될것이다.

비밀일기장에 관련 코드 해석이나 적어놔야겠다.