안드로이드로 앱을 개발할 때 값을 저장하는 방식은 크게 나누면 3가지가 있다.
환경 변수와 같은 값을 저장하는 것, 파일로 저장하는 것 그리고 데이터베이스를 이용하는 방법이 있다.
1. 환경 변수 저장
Preferences 데이터 저장
Preferences를 위한 데이터 저장 시 사용되는 자료구조는 Map 방식이다. 즉 키(key)-값(value) 한 쌍으로 이루어진 1~n개의 항목으로 구성된다. 키(key) 는 String 타입으로, 말 그대로 각 데이터에 접근할 수 있게 하는 유일한 구분자며, 값(Value)은 기본 자료형 (int, boolean, string 등) 기반의 데이터로 구성된다. 다음은 Map 데이터 구조의 한가지 예이다.
Preferences의 형태
안드로이드에서 Preferences는 ListView의 형태로 표현되며 쉬운 Preferences의 ㅁ구현을 위해 PreferenceActivity 클래스를 제공한다. PreferenceActivity 클래스는 XML 기반의 Preference 정의 문서를 통해 App 파일 저장소에 Preferences 파일을 생성하고 사용하는 방식으로 작동한다
2. 파일 저장
String FILENAME = “test.txt”;
EditText edit;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit = (EditText) findViewById(R.id.EditText01);
Button readButton = (Button) findViewById(R.id.read);
readButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
FileInputStream fis = openFileInput(FILENAME);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
edit.setText(new String(buffer));
fis.close();
} catch (IOException e) {
}
}
});
Button writeButton = (Button) findViewById(R.id.write);
writeButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
FileOutputStream fos = openFileOutput(FILENAME,
Context.MODE_PRIVATE);
fos.write(edit.getText().toString().getBytes());
fos.close();
} catch (IOException e) {
}
}
});
}
3. DB 저장
class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mycontacts.db”;
private static final int DATABASE_VERSION = 2;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(“CREATE TABLE contacts ( _id INTEGER PRIMARY KEY” +
” AUTOI