int, float, String, boolean 등 간단한 데이터를 저장하고 불러올 수 있다.
앱을 꺼도 데이터가 유지된다는 점에서 간편한 데이터베이스 역할을 할 수 있다.
DB(데이터베이스)를 사용하기 부담스러운 경우, 간단하게 SharedPreferences를 사용할 수 있다.
하지만 저장할 수 있는 데이터타입에 제약이 있다. 배열이나 객체를 저장하지 못한다.
key/value
형태로 저장data/data/패키지명/shared_prefs/SharedPreference명.xml
에 저장**1. 변수 선언 및 초기화**
// 변수선언
SharedPreferences pref;
SharedPreferences.Editor editor;
// 초기화
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
editor = pref.edit();
**2. 초기값 지정 및 저장값 불러오기**
// (어떤 이름으로 저장하고 불러올지, 저장값이 없을 때 불러올 값)
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
pref.getInt("MyInt01", 0);
**3. 원하는 값 저장하기**
// MyInt01에 10을 저장한다고 가정하면
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
editor.putInt("MyInt01", 10);
editor.apply();
*editor.apply();를 해야만 저장이 실행된다.
4. 삭제하기
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove("MyInt01");
editor.apply();
예제
public class MainActivity extends AppCompatActivity {
SharedPreferences pref; // 프리퍼런스
SharedPreferences.Editor editor; // 에디터
int myInt; // 숫자 변수
String myStr; // 문자 변수
EditText et01, et02; // 레이아웃 변수 EditText
Button btn01, btn02; // 레이아웃 변수 Button
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. Shared Preference 초기화
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
editor = pref.edit();
// 2. 저장해둔 값 불러오기 ("식별값", 초기값) -> 식별값과 초기값은 직접 원하는 이름과 값으로 작성.
myInt = pref.getInt("MyInt", 0); // int 불러오기 (저장해둔 값 없으면 초기값인 0으로 불러옴)
myStr = pref.getString("MyStr", "_"); // String 불러오기 (저장해둔 값 없으면 초기값인 _으로 불러옴)
// 3. 레이아웃 변수 초기화
et01 = findViewById(R.id.et01); et02 = findViewById(R.id.et02);
btn01 = findViewById(R.id.btn01); btn02 = findViewById(R.id.btn02);
// 4. 앱을 새로 켜면 이전에 저장해둔 값이 표시됨
et01.setText(String.valueOf(myInt)); et02.setText(myStr);
// 5. 각 버튼 클릭시 새로운 값 저장
btn01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myInt = Integer.parseInt(et01.getText().toString()); // int Max값 넘게 입력하면 오류 주의.
editor.putInt("MyInt", myInt);
editor.apply(); // 저장
}
});
btn02.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myStr = et02.getText().toString();
editor.putString("MyStr", myStr);
editor.apply(); // 저장
}
});
}
}