안드로이드 프로그래밍

Ch07. 프로세스, DB, 네트워크 - Part 2

Baat 2016. 1. 7. 18:27

Part 1. 프로세스와 스레드


Part 2. 데이터베이스와 환경 설정


01. 데이터를 저장하는 방법


어플리케이션의 상황에 따라 데이터 사용 범위를 따져 데이터 저장 방법은 달라질 수 있다.


공유 프레퍼런스 : key-value pair 로 사적이고 기초적인 데이터 저장

내부 저장 : 사적 데이터를 내부 저장소에 저장

외부 저장 : 공유 데이터를 공유 외부 저장소에 저장

SQLite 데이터베이스 : 구조화된 데이터를 사적 데이터베이스에 저장

네트워크 연결 : 데이터를 네트워크 서버에 저장


사적인 데이터도 콘텐트 제공자를 통하여 다른 어플리케이션에 제공할 수 있다.




02. 공유 프레퍼런스


기초적인 자료형을 key-value pair 로 저장하고 복원할 수 있는 방법. 여러 개의 액티비티들이 이 프레퍼런스를 공유할 수 있으며, 하나의 액티비티에서 값을 변경하면 다른 액티비티에서도 변경된 값을 읽게 된다. - 액티비티 간의 데이터 교환 목적으로도 사용이 가능하다.




03. 어플리케이션 환경 설정


환경 설정 화면은 안드로이드의 Preference API를 이용하여 사용자 인터페이스를 구축하는 것과 유사한 방법으로 작성할 수 있다.

뷰 : Preference 클래스를 XML 파일에 선언

설정 화면 표시 : PreferenceActivity 클래스를 사용.




04. 외부 저장 공간


내부 공간과 외부 공간의 비교

내부 저장 공간은 주로 장치 안에 내장된 비휘발성 메모리이고, 외부 저장 공간은 마이크로 SD 카드로 탈착이 가능하다.


외부 저장 공간 사용 가능 검사

작업하기 전 먼저 getExternalStorageState()를 호출해 외부 미디어가 있는지 체크해야 한다.


매니페스트 파일 설정

외부 저장 공간의 파일에 접근하려면 매니페스트 파일에 권한을 지정해야 한다.


공유되는 파일 저장하기

공용 디렉터리를 나타내는 File 객체를 얻기 위해서는 getExternalStoragePublicDirectory()를 호출한다.


사적 파일 저장하기

getExternalFilesDir()를 호출해 사적 공간을 얻어 사용해야 한다.

사적인 디렉터리는 사용자가 앱을 제거하면 전부 삭제된다.


예제 - FileTest02


05. 데이터베이스


SQLite

안드로이드는 SQLite 라는 데이터베이스를 지원한다. 이는 초경량급의 데이터베이스이며, C언어로 작성된 효율적인 SQL 데이터베이스 엔진을 가지고 있다. 데이터는 디스크 파일에 저장되며, 서버/클라이언트 개념을 사용하지 않는다.


SQL

관계형 데이터베이스에서 사용하기 위해 설계된 언어로, 표준적인 SQL 명령어들이 있으며 이것은 모든 관계형 데이터베이스에 의하여 지원된다. 명령어들은 데이터 정의 명령어(테이블 생성 및 변경), 데이터 조작 명령어(데이터 추출, 추가, 삭제, 수정) 의 두 가지 카테고리로 나누어진다.


결과 집합과 커서

결과 집합 : 쿼리의 조건을 만족하는 레코드들의 집합

커서 : 결과 집합의 레코드들을 포함하고 있는 파일에 대한 포인터. 정방향/역방향으로 움직일 수 있다.


SQLite 브라우저

테이블을 정의하고 데이터를 입력할 때 브라우저를 사용하면 편리하다.

다운로드 링크 : http://sqlitebrowser.org/




06. 데이터베이스 사용하기


SQLiteOpenHelper 클래스로 데이터베이스 생성

데이터베이스를 감싸고 있는 도우미 클래스로, 이를 사용하면 데이터베이스가 생성되거나 버전이 업그레이드될 때에 호출되는 콜백 메소드를 개발자가 정의해 적절한 처리를 할 수 있다.

먼저 SQLiteOpenHelper 클래스에서 상속받은 클래스를 정의하고 이 클래스에서 onCreate()와 onUpgrade()를 정의하면 된다.


SQL과 전용 메소드를 사용해 데이터 추가, 삭제, 쿼리하기

SQLiteDatabase 객체가 제공하는 일반적인 SQL 문장을 이용해 메소드를 실행한다.

+ 검색도 할 수 있다.

예제 - DatabaseTest01


SQLiteOpenHelper 없이 데이터베이스 사용하기

openOrCreateDatabase() 메소드를 호출하여 데이터베이스 객체를 생성하거나 오픈한다.


데이터베이스 디버깅

안드로이드 SDK는 sqlite3라고 불리는 명령행 도구를 포함하고 있다. sqlite3를 실행하면 테이블을 화면에 표시하거나 SQL 명령어를 실행할 수 있다. add shell로 쉘을 실행한 후에 sqlite3를 실행하면 된다.




07. 데이터베이스와 어댑터


어플리케이션을 효율적으로 작성하는 것이 필요한 경우 사용할 수 있는 객체가 SimpleCursorAdapter 객체이다. 데이터베이스와 화면을 연결하는 객체로, 데이터베이스에서 데이터를 읽어 정해진 레이아웃으로 화면에 표시한다.

예제 - DatabaseTest02




Lab. 영화 데이터베이스 만들기




Part 3. 콘텐트 제공자

Part 4. 네트워크


전문 참고: 그림으로 쉽게 설명하는 안드로이드 프로그래밍(천인국 저, 생능출판)