안드로이드는 여러가지 방법으로 앱 데이터를 저장한다.

저장 방법의 선택은 데이터의 크기와 어떤 종류의 데이터를 저장하는지, 개발중인 앱에서만 사용하는 데이터인지 다른 앱이나 사용자가 접근할 수 있는지에 따라 달라진다.

 

내부 파일 저장소: 기기 파일 시스템에 앱에서만 사용할 수 있도록 저장한다.

외부 파일 저장소: 외부 파일 시스템에 파일을 저장한다. 사용자가 접근할 수 있어야하는 경우 사용한다.

공유 기본 설정: 데이터를 키-값으로 저장한다.

데이터베이스: 데이터베이스에 구조화하여 데이터를 저장한다.

 

외부 파일 저장소를 제외하고 다른 방법은 데이터를 다른 앱에서 접근할 수 없다. 공유하고자하는 경우 FileProvider API를 사용해야한다.

 

앱의 데이터를 다른 앱이 사용할 수 있게 하는 경우, ContentProvider를 사용하면 된다. 콘텐츠 프로바이더는 데이터를 저장 방식과 상관없이 다른 앱에서 읽기/쓰기를 제어할 수 있도록 권한을 준다.

 

내부 저장소

개별 어플리케이션에서 사용하는 전용 파일이다.

내부 앱 데이터를 저장하는데 사용된다.

사용자가 앱을 삭제하면 저장된 파일이 삭제된다.

그렇기에 데이터가 앱을 지워도 남게하려면 MediaStore API를 사용해서 적절한 저장소에 저장해야한다.

 

외부 저장소

모든 안드로이드 기기는 파일을 저장하는데 사용할 수 있는 외부 저장소를 가지고 있다.

파일에 접근하기 전에 외부 저장소 디렉토리를 사용할 수 있는지 확인해야한다.

 

다른 앱에서도 접근해야하고 앱 제거 뒤에도 사용해야하는 데이터라면 외부 저장소를 이용하는 것이 좋다.

 

공유 기본 설정 (SharedPreferences)

데이터를 많이 저장하지 않고, 데이터 구조가 필요하지 않는 경우 사용한다.

boolean, float, int, long, string 유형의 데이터를 키-값으로 쓰고 읽을 수 있다.

이것은 XML파일에 작성되고, 앱이 종료되더라도 유지된다.

파일 이름을 직접 지정하거나 액티비티별로 파일을 사용해 데이터를 저장할 수 있다.

 

 

데이터베이스

안드로이드는 SQLite를 완전히 지원한다. 생성한 모든 데이터 베이스는 앱에의해서만 사용이 가능하다.

SQLite API를 직접사용하는 대신 Room 라이브러리로 데이터베이스를 생성하고 관리하는 것이 좋다.

 

Room라이브러리는 SQLite를 완벽하게 활용하는 객체 매핑 추상화 계층을 제공한다.

 

 

+ Recent posts