SharedPreferences : 화면의 내용이 초기화 되지 않고 유지되는 기능이다.
일반적으로 설정 기능을 구현하고자 할 때 주로 사용되는 것으로 유용하게 쓰일것으로 생각되어 포스팅합니다.
* SampleSharedPreferences.java
package com.androes.exrate;
...
public class SampleSharedPreferences extends Activity {
private SharedPreferences pref = null;
private EditText nameEditText = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 입력된 정보를 저장하기 위해 Class & Method 호출
pref = getSharedPreferences("com.androes.whitepaper",Activity.MODE_PRIVATE);
nameEditText = (EditText) findViewById(R.id.nameEditText);
// 값 호출
nameEditText.setText(pref.getString("nation", ""));
}
...
@Override
protected void onStop() {
super.onStop();
// 저장을 위해 Edit객체 호출
SharedPreferences.Editor editor = pref.edit();
// 값 변경
editor.putString("nation", nameEditText.getText().toString());
// 변경된 값 저장
editor.commit();
}
}
...
public class SampleSharedPreferences extends Activity {
private SharedPreferences pref = null;
private EditText nameEditText = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 입력된 정보를 저장하기 위해 Class & Method 호출
pref = getSharedPreferences("com.androes.whitepaper",Activity.MODE_PRIVATE);
nameEditText = (EditText) findViewById(R.id.nameEditText);
// 값 호출
nameEditText.setText(pref.getString("nation", ""));
}
...
@Override
protected void onStop() {
super.onStop();
// 저장을 위해 Edit객체 호출
SharedPreferences.Editor editor = pref.edit();
// 값 변경
editor.putString("nation", nameEditText.getText().toString());
// 변경된 값 저장
editor.commit();
}
}
SharedPreferences 는 임시변수나 작은 크기의 설정 및 환경변수 정보를 저장하기 적합하지만,
다양하고 용량이 큰 데이터 저장시에는 파일 및 sqlite를 사용하는것을 권장합니다.
* 데이터 저장위치(DDMS 나 adb 툴을 이용)
/data/data/패키지명/shared_prefs/패키지명.xml
ex. /data/data/com.androes.exrate/shared_prefs/com.androes.exrate.xml
# cat com.androes.exrate.xml
< ?xml version='1.0' encoding='utf-8' standalone='yes' ?>
< map>
< string name="nation">KOR</string>
< /map>
단, 위 파일은 루팅하셔야만 확인할 수 있다는 점 잊지마세요^^
저도 루팅 안하고 이거 찾느라 바보같이 쌩쇼를 했네요..ㅠㅠ
ex. /data/data/com.androes.exrate/shared_prefs/com.androes.exrate.xml
# cat com.androes.exrate.xml
< ?xml version='1.0' encoding='utf-8' standalone='yes' ?>
< map>
< string name="nation">KOR</string>
< /map>
단, 위 파일은 루팅하셔야만 확인할 수 있다는 점 잊지마세요^^
저도 루팅 안하고 이거 찾느라 바보같이 쌩쇼를 했네요..ㅠㅠ
그럼 님들 저처럼 삽질 마시고 유용하게 잘 사용하시길...^^
p.s) Summary
// WRITE
SharedPreferences prefs = getSharedPreferences("CyLostPrefName", MODE_PRIVATE);
Editor ed = prefs.edit();
ed.putString("gmailID", "snazzy7979");
ed.putString("gmailPWD", "pwd12345");
ed.commit();
// REMOVE
SharedPreferences prefs = getSharedPreferences("androesPrefName", MODE_PRIVATE);
Editor ed = prefs.edit();
ed.remove("gmailID");
ed.remove("gmailPWD");
// ed.clear();
ed.commit();
// READ
SharedPreferences prefs = getSharedPreferences("androesPrefName", MODE_PRIVATE);
String gmailID = prefs.getString("gmailID", "");
String gmailPWD = prefs.getString("gmailPWD", "");
SharedPreferences prefs = getSharedPreferences("CyLostPrefName", MODE_PRIVATE);
Editor ed = prefs.edit();
ed.putString("gmailID", "snazzy7979");
ed.putString("gmailPWD", "pwd12345");
ed.commit();
// REMOVE
SharedPreferences prefs = getSharedPreferences("androesPrefName", MODE_PRIVATE);
Editor ed = prefs.edit();
ed.remove("gmailID");
ed.remove("gmailPWD");
// ed.clear();
ed.commit();
// READ
SharedPreferences prefs = getSharedPreferences("androesPrefName", MODE_PRIVATE);
String gmailID = prefs.getString("gmailID", "");
String gmailPWD = prefs.getString("gmailPWD", "");