본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/안드로이드 스튜디오

안드로이드 데이터 저장하기 SharedPreference

by 미노드 2016. 9. 2.

안드로이드에서 ID, PW, 특정상태값을 변수에 저장하더라도 앱을 종료한다면 모두 사라진다.

그래서 데이터를 저장하여 사용할 경우 앱을 종료 후 다시 실행하더라도 저장된 상태값을 다시 사용할 수 있다.

그 방법을 적어보려한다.


원래는 DB를 이용하여 사용할 수도 있으나 그 방법은 너무 어렵다..

그래서 대안으로 찾은 것이 SharedPreference API를 이용하는 것이다.

이 방법은 특정 데이터를 xml에 저장시켜서 읽거나 쓰는 방식이다.


이 방법은 xml로 처리하기 때문에 동작속도가 조금 느린 단점이 있다.

그러니 많은 데이터를 이용하는것을 추천하진 않는다.

파일의 위치는 data/data/[패키지 이름]/shared_prefs에 저장되며

저장되는 방식은 키이름(keyname)-저장된 값(value Pair)의 쌍으로 저장된다.


1. preference 선언하기

1
2
3
4
5
6
SharedPreferences setting; // Preferences 객체 생성
 
setting = getSharedPreferences("setdata"0); // Preference 정의 기록할xml이름, 모드 0 : 읽기, 쓰기 가능
 
 
SharedPreferences 의 객체 setting을 생성하고 getSharedPreferences메소드를 통해 기록할 xml과 모드를 정의한다.
cs


2. 데이터 저장하기


1
2
3
4
5
6
7
SharedPreferences.Editor editor; // editor 생성 데이터저장에 필요
 
editor = setting.edit(); // Editor 인터페이스는 데이터를 저장할때 사용, edit()메소드로 Editor 불러옴
 
editor.putString("troy""안녕나세요");  // Editor 의 putString(), putBoolean(), putInt() 등의 put 메소드를 통해서 데이터를 넣어준다.
 
editor.commit();  // commit 을 누르면 저장 완료
cs


데이터 저장을 하려면 SharedPreferences의 Editor 객체를 통해 저장해야한다.

Editor 객체 editor에 아까 만들어둔 setting객체의 edit()메소드를 통해 선언해야한다.

그 뒤에 editor의 메소드를 이용하여 데이터를 저장할 수 있는데 사용가능한 메소드는 다음과 같다.


setting.putString(key, value)

setting.putFloat(key, value)

setting.putInt(key, value)

setting.putLong(key, value)

setting.putString(key, value)


자료의 타입마다 다른명령으로 저장해야한다. 왼쪽은 저장할 값의 이름, 우측은 저장될 값

위에 메소드를 선언한 뒤 commit()메소드를 실행하면 데이터가 저장된다.


3. 데이터 불러오기


1
2
3
4
5
6
7
8
9
setting.getString(key, defValue);
 
setting.getFloat(key, defValue);
 
setting.getInt(key, defValue);
 
setting.getLong(key, defValue);
 
setting.getString(key, defValue);
cs


자료의 타입마다 다른명령으로 가져와야함, 왼쪽은 불러올 값의 이름, 우측은 값이없을때 반환될 값

위의 메소드를 통해 원하는 자료형의 데이터를 불러올 수 있다.


※ 응용해보기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class MainActivity extends AppCompatActivity {
 
    SharedPreferences setting; // Preferences 선언
 
    SharedPreferences.Editor editor; // editor 선언 데이터저장에 필요
 
    TextView login_text1;
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.login_main1);
 
 
 
        setting = getSharedPreferences("setting"0); // Preference 정의 기록할xml이름, 모드 0 : 읽기, 쓰기 가능
 
 
 
        // * 데이터 저장
        editor = setting.edit(); // Editor 인터페이스는 데이터를 저장할때 사용, edit()메소드로 Editor 불러옴
 
        editor.putString("troy""안녕나세요");  //Editor 의 putString(), putBoolean(), putInt() 등의 put 메소드를 통해서 데이터를 넣어준다.
 
        editor.commit();  // commit 을 누르면 저장 완료
 
 
 
        // * 데이터 출력
        login_text1 = (TextView) findViewById(R.id.login_text1);
 
        login_text1.setText(setting.getString("troy""hello"));
 
 
    }
 
}
cs