본문 바로가기

FrontEnd/Android 기초

[Android] SharedPreferences를 이용한, 데이터 저장과 불러오기

반응형

SharedPreferences를 이용한, 데이터 저장과 불러오기

SharedPreferences를 이용해서, 앱 내의 저장소에 영구 저장하는 방법!!

 

참고:

https://developer.android.com/training/data-storage/shared-preferences?hl=ko

 

 

1. SharedPreferences란?

안드로이드 개발을 하다 보면, DB에 데이터들을 저장해야 하는 경우가 많이 생긴다.

 

데이터의 양이 많거나 중요 데이터의 경우 서버나 DB에 저장해야겠지만, 간단한 설정 값이나 문자열 같은 데이터를 저장하기 위해 DB를 사용하기는 부담스럽기 때문에 SharedPreferences를 사용하는 것이 적합하다.

 

다시 말해서, 로그인 화면에 아이디 저장, 비밀번호 저장하는 행위는 DB에 데이터들을 저장할 필요가 없고 내부적으로 저장을 하면 될뿐더러 혹여 내부 DataBase(Room, mssql)를 사용하면 또 간단한 것을 저장하기엔 부담스러운 상황이 생기기 마련이다.

 

이런 것을 좀 더 쉽게 저장할 수 있도록 안드로이드에서 기본적으로 제공되는 SharedPreferences를 사용하여 데이터를 관리할 수 있다.

 

SharedPreferences는 데이터를 파일로 저장하는데, 이 파일은 앱 폴더 내에 저장되므로 앱을 삭제하면 당연히 데이터 파일도 삭제가 된다.

파일 경로  =  data/data/(package_name)/shared_prefs/SharedPreference


2. SharedPreferences의 특징

  • 보통 초기 설정값이나 자동 로그인 여부 등 간단한 값을 저장하기 위해 사용
  • Application에 파일 형태로 데이터를 저장한다.
  • Application이 삭제되기 전까지 저장한 데이터가 영구적으로 보존된다. 앱을 삭제하면 당연히 데이터가 같이 삭제된다. 
  • Key-value 형식이다.

3. SharedPreferences의 저장 및 불러오기

저장하는 화면

 
SharedPreferences sp = getSharedPreferences("Multiple2",MODE_PRIVATE); 
// 파라미터: 저장소이름(보통은 프로젝트 이름), MODE
// 내 앱 저장소를 만들었다.

SharedPreferences.Editor editor = sp.edit();
// Editor를 preference에 쓰겠다고 연결. 이 editor한테 일을 주면 된다.

editor.putString("email",email);
// putString(key, value);
editor.putInt("number",365);
editor.apply(); 
// 항상 commit & apply를 해주어야 저장이 된다.

//이거 끝나고 다음 화면으로 넘어감

 

MODE의 종류

  • MODE_PRIVATE : 생성한 Application에서만 사용 가능하다.
  • MODE_WORLD_READABLE : 외부 App에서 사용 가능, But 읽기만 가능
  • MODE_WORLD_WRITEABLE : 외부 App에서 사용 가능, 읽기/쓰기 가능

대부분은 MODE_PRIVATE를 많이 사용한다. 

 

불러오는 화면:

txtSp = findViewById(R.id.txtSP);

txt.setText(email+"님, 안녕하세요");

// 쉐어드 프리퍼런스에서 데이터를 가져오는 방법
SharedPreferences sp = getSharedPreferences("Multiple2",MODE_PRIVATE);
String savedEmail = sp.getString("email","없음");
// 저장된 값을 불러옴: getString( key, defValue)
// defValue: 해당 키값이 존재하지 않을 때 대체되어 나올 값을 지정한다. 한글로 “없음”이라고 해도 되고, “”로 표기해도 된다.

txtSp.setText("저장되었던 이메일은: " + savedEmail);​

 

정리해서 보면 의외로 간단하다.

저장 데이터: 

 
SharedPreferences preferences = getSharedPreferences( "파일 이름(테이블 이름)" , MODE값);

SharedPreferences.Editor editor = preferences.edit();

editor.putString(KEY, VALUE);

editor.apply();

 

불러오는 데이터:

SharedPreferences preferences = getSharedPreferences( "파일 이름(테이블 이름)" , MODE값);

preferences.getString(KEY, defValue);

 

데이터를 저장하는 putString과 데이터를 꺼낼 때의 getString()은 상응하는데, 당연하게도, 저장하는 데이터 타입과 꺼내는 데이터 타입이 같아야한다. 

또한, putString 뿐만 아니라 아래와 같은 데이터도 사용 가능하다.

 

 

 

저장소에서는 보통 토큰을 저장해서 억세스하는데 사용한다.


4. SharedPreferences의 데이터 삭제

 

키 값 삭제: 

SharedPreferences preferences= getPreferences(context);
SharedPreferences.Editor edit = preferences.edit();

edit.remove(key);

edit.apply();

 

모든 저장 데이터 삭제: 

SharedPreferences preferences= getPreferences(context);
SharedPreferences.Editor edit = preferences.edit();

edit.clear();

edit.apply();

 

반응형