자유로운영혼

kgbvsfbi.egloos.com

포토로그




Data Storage Android

Data Storage
안드로이드의 특성상 어플리케이션의 데이터는 앱마다 격리되어져있다. 그래서 안드로이드는 앱들사이에 데이터 교환을 위해 표준방법으로 content providers를 제공한다. 안드로이드는 많이 사용되는 데이터 타입들을 위한(이미지, 오디오, 비디오 등) 많은 종류의 컨텐트 프로바이더들을 제공한다.
그리고 안드로이드는 데이터에 접근하기 위한 4가지 메카니즘(Preferences, Files, Database, Network)을 제공한다. 그리고 이 메카니즘으로 얻어진 데이터는 컨텐트 프로바이더에 의해 다른 앱에 제공(read/write) 될 수 있다.

Preferences
preferences는 기본타입(자바기본타입)을 키-벨류의 형태로  저장하고 불러오는 가벼운 메카니즘이다.
개인설정(preferences?)은 애플리케이션이 시작될때 로드되는 데이터들(UI 상태 커스텀 데이터 등)을 담은 공간으로 Context.getSharedPreferences() 호출로 데이터들을 접근할 수 있다.

Files
물론 직접 파일에 데이터를 저장하는 것이 가능하다. 그러나 이 파일들은 기본적으로 다른 앱에서 접근할 수 없다.
파일로 부터 데이터를 읽기 위해서는 Context.openFileInput() 를 호출고 파일의 패스와 로컬네임을 파라미터로 넘겨준다. 그러면 스탠다드 자바의 FileInputStream오브젝트를 반환한다. 파일에 쓰기 위해서는 Context.openFileOutput() 을 호출(with 이름, 패스)하면 FileOutputStream 오브젝트를 리턴한다. 이 메소드들은 오직 로컬 파일들만 엑세스할 수 있다.

만약 스테틱 파일을 가지고 있다면 프로젝트의 res/raw/myDataFile 에 저장하고 Resources.openRawResource(R.raw.myDataFile) 로 열 수 있다. 이 메소드는 InputStream 을 반환한다.

Database
안드로이드는 SQLite를 이용할 수 있는 API들을 제공한다. 어플리케이션에서 디비를 생성하면 그 디비는 그 앱에만 종속되어 진다.(참고로 SQLite에서 디비는 각각 하나의 .db확장자를 같는 하나의 파일이다)
SQLiteDatabase 오브젝트는 디비를 생성하고 쿼리를 날리는등 많은 매소드 들을 포함하고 있다. 또한 서브클래스로 SQLiteOpenHelper 가 있다.

안드로이드는 랩핑된 데이터의 복잡한 컬렉션을 유용한 오브젝트로 저장하기 위한 메소드들을 드러낸다. 예를 들어 안드로이드는 컨텐트 정보를 위한 데이터 타입을 정의한다. 성,이름(strings), 주소, 전번(strings), 사진(bitmap image) 등등
안드로이드는 sqlite3 database tool을 제공한다.
Examine databases (sqlite3) 참조
모든 디비들(SQLite와 나머지)는 /data/data/package_name/databases 에 저장된다.
일반적인 디비의 경우 자동으로 증가되는 value key 필드(유니크 ID로 사용할 수 있는)를 권장하지만 컨텐트 프로바이더를 구현할 경우 반드시 유니크 ID 필드를 포함해야한다. 앱에서 만든 디비는 같은 앱안의 어떠한 클래스에서도 접근할 수 있다. 그러나 외부 앱에서는 접근이 불가하다.

Network
안드로이드는 또한 네트웍을 통해 데이터를 접근할 수 있다. 네트워을 위해 아래의 패키지들을 사용한다.
java.net.*
android.net.*




1 2 3 4 5 6 7 8 9