🟨 목 차 🟨
1. SharedPreferences 란
2. SharedPreferences 사용하기
2-1. SharedPreferences 인스턴스 얻기
2-2. SharedPreferences에 데이터 저장하기
2-3. SharedPreferences에 데이터 불러오기
2-4. SharedPreferences에 데이터 삭제하기
3. SharedPreferences 자동 로그인 구현
나는 자동 로그인 기능을 구현하기 위해 어떤식으로 구현을 할 지가 고민이었다. 내가 생각하기에 자동 로그인 기능이라고 하면은 DB에 저장되서 불러오는게 아니라 어플리케이션에 파일 헝태로 데이터를 저장하고 가져와야 한다고 생각했고 검색해보니 SharedPreferences 라는 것이 있었다. SharedPreferences에 대해 알아보고 실제로 적용시켜보자.
◼️ 1. SharedPreferences 란 ◼️
- 로컬에 데이터를 저장하기 위해 사용되며, 간단한 것들(Key-Value)은 SharedPreferences에 저장을 하고 대용량들은 SQLite,Room 등을 이용한다.
- 보통 초기 설정값, 자동로그인 여부, 테마 설정 같은 간단한 설정 등을 이용할 때 사용하면 좋다.
- 애플리케이션에 파일 형태로 데이터를 저장한다.(data/data/패기지명/shared_prefs/SharedPreferece이름.xml 위치에 저장)
- 애플리케이션이 삭제되기 전까지 보존된다.
◼️ 2. SharedPreferences 사용하기 ◼️
◼️ 2-1. SharedPreferences 인스턴스 얻기
1. getPreferences(int mode)
- 하나의 액티비티에서만 사용하는 SharedPreferences를 생성한다.
- 생성되는 SharedPreferences 파일은 해당 액티비티이름으로 생선된다.
- 하나의 액티비티에서만 사용할 수 있지만 getSharedPreferences()를 사용하면 다른 액티비티에서도 사용가능하다.
2. getSharedPrefereneces(String name, int mode)
- 특정 이름을 가진 SharedPreferences를 생성한다.
- 주로 애플리케이션 전체에서 사용한다.
◼️ 2-2. SharedPreferences에 데이터 저장하기
데이터를 저장하기 위해서는 SharedPreferences.Editor 인스턴스를 얻어야 한다.[ 데이터 삭제하는것도 SharedPreferences.Editor 인스턴스를 얻어야 하지만 데이터를 불러올때는 필요없다.]
editor.putInt(Key, Value) / editor.putString(Key, Value) / editor.putBoolean(Key, Value)
첫번째 인자는 키 값, 두번째 인자는 넣을 값을 넣어준다.
[ex]
SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE); //SharedPreferences의 객체인 test 생성
SharedPreferences.Editor editor = test.edit(); //SharedPreferences의 객체인 test의 Editor 인스턴스 획득
editor.putString("First", infoFirst); //First라는 key값으로 infoFirst 데이터를 저장한다.
editor.putString("Second", infoSecond); //Second라는 key값으로 infoSecond 데이터를 저장한다.
editor.commit(); //완료한다.
◼️ 2-3. SharedPreferences에 데이터 불러오기
데이터를 불러오기 위해서는 SharedPreferences의 객체를 생성하고 getInt(), getString(), getBoolean() 메소드를 사용하여 불러와야한다.
getInt(Key, Value) / getString(Key, Value) / getBoolean(Key, Value)
첫번째 인자는 키 값, 두번째 인자는 해당값이 없을경우(null) 반환할 값을 넣어준다.
[ex]
SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE); //SharedPreferences의 객체인 test 생성
int firstData = test.getInt("First", 0); //SharedPreferences의 객체인 test로 getInt()메소드로 데이터 불러오기
◼️ 2-4. SharedPreferences에 데이터 삭제하기
데이터를 삭제하기 위해서는 SharedPreferences.Editor 인스턴스를 얻어야 한다.
1. 특정 데이터 삭제
[ex]
SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE); //SharedPreferences의 객체인 test 생성
SharedPreferences.Editor editor = test.edit(); //SharedPreferences의 객체인 test의 Editor 인스턴스 획득
editor.remove("test"); // SharedPreferences에 키 값이 test인 데이터 값 삭제
editor.commit(); // editor commit
2. 모든 데이터 삭제
[ex]
SharedPreferences test = getSharedPreferences("test", MODE_PRIVATE); //SharedPreferences의 객체인 test 생성
SharedPreferences.Editor editor = test.edit(); //SharedPreferences의 객체인 test의 Editor 인스턴스 획득
editor.clear(); //SharedPreferences에 저장된 모든 데이터 삭제
editor.commit(); //editor commit
◼️ 3. SharedPreferences 자동 로그인 구현 ◼️
◼️ 3-1. SharedPreferences 객체 생성
private SharedPreferences appData; //SharedPreferences객체 변수 생성
◼️ 3-2. 설정값(ID,PWD)을 저장하는 함수, 설정값(ID,PWD)을 불러오는 함수
// 설정값을 저장하는 함수
private void save() {
// SharedPreferences 객체만으론 저장 불가능 Editor 사용
SharedPreferences.Editor editor = appData.edit();
// 에디터객체.put타입( 저장시킬 이름, 저장시킬 값 )
// 저장시킬 이름이 이미 존재하면 덮어씌움
editor.putBoolean("SAVE_LOGIN_DATA", cb_save.isChecked());
editor.putString("ID", input_phone_num.getText().toString().trim());
editor.putString("PWD", input_phone_num2.getText().toString().trim());
// apply, commit 을 안하면 변경된 내용이 저장되지 않음
editor.apply();
}
// 설정값을 불러오는 함수
private void load() {
saveLoginData = appData.getBoolean("SAVE_LOGIN_DATA", false);// SharedPreferences 객체.get타입( 저장된 이름, 기본값 )
id = appData.getString("ID", ""); // 키 값(ID)에 저장된 값 불러오고 기본값(null)일 때는 null값 출력
pwd = appData.getString("PWD", ""); // 키 값(PWD)에 저장된 값 불러오고 기본값(null)일 때는 null값 출력
}
◼️ 3-3. onCreate()에 설정값을 불러오는 함수 사용
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.log_phone);
appData = getSharedPreferences("appData", MODE_PRIVATE); //만들어진 SharedPreferences 객체 변수에 사용할 sharedpreferences이름과 모드 설정
load(); //로그인 정보 가져오기
if(saveLoginData) { //load() 메소드 호출에서 saveLoginData의 boolean 값의 true/false 여부 확인
input_phone_num.setText(id); //id_textview에 true라면 save()함수를 통해 저장한 editor.putString(Id)의 값을 가져오고, false라면 null 값 출력
input_phone_num2.setText(pwd); //pwd_textview에 true라면 save()함수를 통해 저장한 editor.putString(Pwd)의 값을 가져오고, false라면 null 값 출력
cb_save.setChecked(saveLoginData); //cb_save(체크박스) 체크여부를 saveLoginData(true/false) 값을 넣어준다.
}
}
'프로젝트 > Android Studio_중고거래앱_Project' 카테고리의 다른 글
Android Studio_중고거래 앱(Firebase Authentication, Realtime Database를 이용하여 ID, PWD 찾기 ) (0) | 2022.08.08 |
---|---|
Android Studio_중고거래 앱(파이어베이스를 이용한 로그아웃, 회원탈퇴) (0) | 2022.08.05 |
Android Studio_중고거래 앱(프래그먼트 >> 액티비티로의 데이터[위치 정보] 전달) (0) | 2022.08.04 |
Android Studio_중고거래 앱(구글 Map Api 사용을 하여 현재 위치 추출하기) (0) | 2022.08.04 |
Android Studio_중고거래 앱(등록된 상품 목록을 클릭하면 자세한 상품 내용 보여주는 화면 구성) (0) | 2022.08.04 |