애플리케이션 제작 중 로그인 유무를 저장하기 위해 SharedPreferences을 사용하였습니다. 필요한 데이터를 앱에 저장하는 것이라고만 알고 있지만 정확한 개념이 궁금하여 찾아보았습니다.
공식 안드로이드 개발자 문서를 참고하였습니다.
SharedPreferences로 단순 데이터 저장하기 | App data and files | Android Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. SharedPreferences로 단순 데이터 저장하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 저장하려는 키-
developer.android.com
SharedPreferences란?
SharedPreferences는 안드로이드에서 간단한 데이터를 저장할 수 있도록 제공하는 저장소입니다. 내부적으로는 key-value 쌍으로 데이터를 저장하며, 앱 설정값이나 사용자 정보와 같은 간단한 환경설정 데이터를 저장할 때 자주 사용됩니다.
일반적으로 개발 시 데이터를 저장할 때 데이터베이스를 사용하지만 간단한 데이터를 간편하게 저장하기 위해 사용하는 것입니다.
다음 메서드 중 하나를 호출하여 새로운 공유 환경설정 파일을 생성하거나 기존 파일에 액세스할 수 있습니다.
- getSharedPreferences(): 이름으로 식별되는 공유 환경설정 파일이 여러 개 필요한 경우 이 메서드를 사용합니다. 이름은 첫 번째 매개변수로 지정할 수 있습니다. 앱의 모든 Context에서 이 메서드를 호출할 수 있습니다.
- getPreferences(): 활동에 공유 환경설정 파일을 하나만 사용해야 하는 경우 Activity에서 이 메서드를 사용합니다. 이 메서드는 활동에 속한 기본 공유 환경설정 파일을 검색하기 때문에 이름을 제공할 필요가 없습니다.
로그인 상태 저장 예시
SharedPreferences pref = getSharedPreferences("UserPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("isLoggedIn", true); // 로그인 상태 저장
editor.apply(); // 또는 editor.commit();
여기서 apply()는 비동기 저장이고, commit()은 동기 저장입니다.
앱 실행 시 로그인 상태 확인
SharedPreferences pref = getSharedPreferences("UserPref", MODE_PRIVATE);
boolean isLoggedIn = pref.getBoolean("isLoggedIn", false); // 기본값은 false
if (isLoggedIn) {
// 자동 로그인 처리
} else {
// 로그인 화면으로 이동
}
SharedPreferences의 저장 위치
SharedPreferences는 내부 저장소의 data/data/패키지명/shared_prefs/ 디렉토리에 .xml 파일 형태로 저장됩니다.