안드로이드 저장소는 설정값, 앱 전용 파일, 다른 앱과 공유할 파일을 어디에 저장하느냐에 따라 선택지가 달라집니다.
SharedPreferences, 내부 저장소, 외부 저장소, SQLite, 네트워크 저장을 구분하면 파일 입출력과 권한 문제를 이해하기 쉬워집니다.
핵심 정리
SharedPreferences는 작은 설정값을 key-value 형태로 저장할 때 쓰고, 내부 저장소는 앱 안에서만 사용하는 파일을 저장할 때 적합합니다. 외부 저장소는 사진이나 공유 파일처럼 다른 앱과 함께 볼 수 있는 데이터를 다룰 때 사용하며, 권한과 경로 차이를 함께 고려해야 합니다. 구조화된 데이터는 SQLite를, 서버와 동기화해야 하는 데이터는 네트워크 저장을 선택합니다.
- SharedPreferences는 작은 설정값이나 상태값을 저장할 때 사용합니다.
- 내부 저장소는 다른 앱과 공유할 필요가 없는 앱 전용 파일에 적합합니다.
- 외부 저장소는 사진, 문서처럼 앱 밖에서도 접근할 수 있는 파일에 사용합니다.
- 외부 저장소는 기기와 버전에 따라 권한과 경로 처리가 달라질 수 있습니다.
- SQLite는 테이블 구조가 필요한 데이터를 저장할 때 사용합니다.
- 데이터를 여러 기기에서 공유해야 하면 네트워크 저장이나 서버 동기화를 고려합니다.
안드로이드 저장소를 고를 때는 먼저 데이터가 앱 전용인지, 사용자와 다른 앱이 접근해야 하는지, 구조화된 검색이 필요한지 나누는 편이 좋습니다. 저장 위치를 먼저 정하면 권한과 파일 입출력 방식도 자연스럽게 좁혀집니다.
가장 기본적인 저장소 개요는 여기를 참조
안드로이드 프로그래밍을 할 때 상태저장 또는 파일입출력, 파일공유 등을 위해 저장소 개념은 중요하다.
그런데 내부/외부 저장소가 있고 저장경로와 권한에 대해 신경써줘야 하는등, 데스크탑에서 하던 콘솔 프로그래밍 또는 MFC등의 application에 비해 복잡성이 좀 더 존재한다.
안드로이드에서 지원하는 저장소에는 다음 5가지가 있다.
1. SharedPreferences: 전용 원시 데이터를 [키, 값] 쌍으로 저장합니다.
2. 내부 저장소: 전용 데이터를 기기 메모리에 저장합니다.
3. 외부 저장소: 공용 데이터를 공유 외부 저장소에 저장합니다.
4. SQLite 데이터베이스: 구조적 데이터를 전용 데이터베이스에 저장합니다.
5. 네트워크 연결: 자신의 네트워크 서버를 사용하여 데이터를 웹에 저장합니다.
SharedPreferences
int, string 등에 대해서 설정값 저장하고 불러올 수 있다.
windows programming에서의 registry개념과 어느정도 유사하다.
내부 저장소
가장 기본적인 파일 입출력 형태라고 볼 수 있다.
다른앱과 공유할 필요없는 앱내부 자료 저장용으로 쓴다.
외부저장소
앱간에 공유할 정보가 있다면 이곳에 저장한다. 앱의 외부라는 측면에서 외부저장소라 부른다.
사진이 저장되는 Pictures폴더나 SD카드, USB스토리지등이 외부저장소에 해당한다.
예를들면 Pictures 폴더의 경우 아래처럼 접근해서 사용
단순히 Environment.getExternalStorageState() 라고만 했을때는, 외부SD카드 경로가 리턴될수도 있고, 내부 메모리의 일정영역이 리턴될수도 있다.
하드웨어 제조사 마음대로. 관련해서는 여기를 참조.
'Programming > Android' 카테고리의 다른 글
| 리눅스 포트 확인: netstat, ss, lsof 사용법 (0) | 2020.06.06 |
|---|
