가장 기본적인 저장소 개요는 여기를 참조


안드로이드 프로그래밍을 할 때 상태저장 또는 파일입출력, 파일공유 등을 위해 저장소 개념은 중요하다.

그런데 내부/외부 저장소가 있고 저장경로와 권한에 대해 신경써줘야 하는등, 데스크탑에서 하던 콘솔 프로그래밍 또는 MFC등의 application에 비해 복잡성이 좀 더 존재한다.


안드로이드에서 지원하는 저장소에는 다음 5가지가 있다.

1. SharedPreferences: 전용 원시 데이터를 [키, 값] 쌍으로 저장합니다.

2. 내부 저장소: 전용 데이터를 기기 메모리에 저장합니다.

3. 외부 저장소: 공용 데이터를 공유 외부 저장소에 저장합니다.

4. SQLite 데이터베이스: 구조적 데이터를 전용 데이터베이스에 저장합니다.

5. 네트워크 연결: 자신의 네트워크 서버를 사용하여 데이터를 웹에 저장합니다.


SharedPreferences

int, string 등에 대해서 설정값 저장하고 불러올 수 있다.

windows programming에서의 registry개념과 어느정도 유사하다.


내부 저장소

가장 기본적인 파일 입출력 형태라고 볼 수 있다.

다른앱과 공유할 필요없는 앱내부 자료 저장용으로 쓴다.

아래 처럼, app이 설치된 directory에서 Java파일 입출력을 할 수 있다.
자바의 파일입출력 API가 지저분한건 자바의 한계이니 감안하면서 보자 ㅠ



저장된 파일을 확인하는데는 아래 Device File Explorer를 쓰면 된다.


외부저장소

앱간에 공유할 정보가 있다면 이곳에 저장한다. 앱의 외부라는 측면에서 외부저장소라 부른다.

사진이 저장되는 Pictures폴더나 SD카드, USB스토리지등이 외부저장소에 해당한다.


예를들면 Pictures 폴더의 경우 아래처럼 접근해서 사용


공유공간을 사용하는 것이다 보니 권한이 필요하다.
아래처럼 manifest에 설정이 필요하다.

경우에 따라 아래코드가 추가로 필요할 수 있다.


단순히 Environment.getExternalStorageState() 라고만 했을때는, 외부SD카드 경로가 리턴될수도 있고, 내부 메모리의 일정영역이 리턴될수도 있다.

하드웨어 제조사 마음대로. 관련해서는 여기를 참조.




반응형

'Programming > Android' 카테고리의 다른 글

리눅스 네트워크 관련  (0) 2020.06.06

+ Recent posts