안드로이드에서 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 |
'IT기술 > 안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 푸시 서비스 구현하기 (0) | 2016.10.19 |
---|---|
안드로이드 한글 깨짐 고치기 (1) | 2016.10.17 |
안드로이드 스튜디오 - 줄 번호(Line Number) 추가하기 (0) | 2016.09.21 |
안드로이드 스튜디오 레이아웃 디자인 한글 깨짐 처리하기 (0) | 2016.07.11 |
타이틀 바 없애기 (0) | 2016.07.11 |