파일과 데이터베이스

·2021년 11월 27일
0

안드로이드

목록 보기
17/17

파일

안드로이드에서만 지원하는 파일 관련 함수들

  • 액티비티 등의 컴포넌트는 Context 클래스를 상속받으며, 이 클래스에 파일 관련 함수들이 구현됨
  • java에서 제공하는 java.io의 클래스를 사용할 수 있다. 예로, FileInputStream, FileOutputStream 등
  • 저장한 파일이 존재하는 위치

Environment.getExternalStorageDirecetory()
외장 메모리의 루트 경로를 얻어온다.

Shared Preference

  • motivation
    • 앱 개발시 각종 환경 설정 값들을 보관해야 할 경우가 있다.
    • 앱이 종료하더라도 설정 값을 유지하기 위해서 파일에 저장해야 한다. 파일 입출력이 번거롭다.
  • 편리한 클래스 제공: 공유 프레퍼런스
    • hashMap 클래스를 이용하여 원하는 데이터를 키와 값 형태로 쉽게 추가 및 제거할 수 있다.
    • 내장메모리에 파일로 저장되기 때문에 영구히 보관 가능하다.


  • getSharedPreference 함수의 특징
    • 함수 호출시에 파일에 저장된 모든 preference 값들을 메모리로 로드한다.
    • xml 파일 형식이기 때문에 데이터가 많으면 xml을 데이터 객체로 변환하는데 오래 걸린다.


  • 처음 preference 파일을 읽을 때는 느리지만, 그 후의 데이터 읽기 속도는 빠르다.
    • 데이터의 caching 효과 때문이다.
  • 앱을 시작할때 getSharedPreferences 함수를 최초 호출하자.
    • 앱을 시작할 때 필요한 데이터를 서버나 로컬에 저장된 데이터를 불러오는 경우가 일반적이다.
    • preference 파일을 사용할 때가 아니더라도 미리 로딩한다는 의미이다
    • 만일 앱을 사용중에 preference 데이터를 접근하지 않는다면 앱 시작 시간을 불필요하게 증가시킴

commit과 apply의 차이점

  • commit 함수
    • 메모리에 저장되어 있는 변경된 값을 곧바로 파일에 저장함
    • 리눅스에서 sync()의 기능과 동일함. 속도가 느리다
  • apply 함수
    • 메모리에 저장되어 있는 변경된 값을 작업 스레드가 파일에 저장함
    • file cache 또는 Buffer cache daemon의 동작과 동일함. 속도가 빠르다
profile

0개의 댓글