1. SharedPreferences란 무엇인가요?
SharedPreferences는 Android에서 데이터를 영구적으로 저장하는 방법 중 하나로, 작은 크기의 데이터를 키-값(Key-Value) 형태로 저장할 수 있습니다.
앱이 종료되거나 재시작되더라도 데이터가 유지되므로, 사용자 설정 값, 간단한 로그인 정보, 마지막 실행 상태 등의 데이터를 저장하는 데 적합합니다.
2. SharedPreferences의 역할
SharedPreferences는 앱 내에서 간단한 데이터를 저장하고 관리하는 역할을 합니다.
1. 사용자 설정 값 저장
- 다크 모드 설정, 알림 여부 등의 환경 설정을 저장하는 데 사용됩니다.
2. 간단한 사용자 데이터 저장
- 자동 로그인 여부, 마지막 로그인한 계정 정보 등을 저장할 수 있습니다.
3. 앱 상태 유지
- 앱이 종료되더라도 마지막 실행했던 화면 정보를 저장하여 복원할 수 있습니다.
3. SharedPreferences의 주요 메서드
메서드 | 설명 |
getSharedPreferences(String name, int mode) | 특정 SharedPreferences 파일을 가져옴 |
edit() | 데이터를 저장할 수 있도록 Editor 객체를 반환 |
putString(String key, String value) | 문자열 값을 저장 |
putInt(String key, int value) | 정수 값을 저장 |
putBoolean(String key, boolean value) | 불리언 값을 저장 |
putFloat(String key, float value) | 실수 값을 저장 |
putLong(String key, long value) | 긴 정수 값을 저장 |
apply() | 데이터를 비동기적으로 저장 |
commit() | 데이터를 동기적으로 저장 |
getString(String key, String defaultValue) | 저장된 문자열 값을 가져옴 |
getInt(String key, int defaultValue) | 저장된 정수 값을 가져옴 |
getBoolean(String key, boolean defaultValue) | 저장된 불리언 값을 가져옴 |
4. SharedPreferences 데이터 저장 및 불러오기
1. 데이터 저장하기
* SharedPreferences에 데이터를 저장하려면 Editor 객체를 사용해야 합니다.
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "AndroidUser");
editor.putInt("age", 25);
editor.putBoolean("isLoggedIn", true);
editor.apply();
2. 데이터 불러오기
* 저장된 데이터를 불러올 때는 get 메서드를 사용합니다.
String username = sharedPreferences.getString("username", "Guest");
int age = sharedPreferences.getInt("age", 0);
boolean isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false);
3. 데이터 삭제하기
* 특정 데이터만 삭제하거나 모든 데이터를 삭제할 수 있습니다.
editor.remove("username"); // 특정 데이터 삭제
editor.clear(); // 모든 데이터 삭제
editor.apply();
5. SharedPreferences의 데이터 저장 방식
SharedPreferences는 내부적으로 XML 파일을 사용하여 데이터를 저장합니다.
앱의 내부 저장소에 파일 형태로 보관되므로, 다른 앱에서 접근할 수 없습니다.
데이터 저장 방식 | 설명 |
내부 저장소(XML 파일) | 앱 전용 저장소에 XML 파일로 저장 |
키-값 쌍 | 데이터를 키와 값으로 저장 |
비휘발성 저장 | 앱을 종료해도 데이터 유지 |
6. apply()와 commit()의 차이
SharedPreferences 데이터를 저장할 때 apply()와 commit() 두 가지 방법이 있습니다.
메서드 | 설명 | 저장 방식 | 성능 |
apply() | 비동기적으로 데이터를 저장 | 백그라운드에서 처리 | 빠름 |
commit() | 동기적으로 데이터를 저장 | 즉시 반영 (반환값 존재) | 느릴 수 있음 |
apply()는 비동기적으로 저장되므로 성능이 우수하지만, 저장이 완료되기 전에 앱이 종료되면 데이터가 저장되지 않을 수도 있습니다.
반면 commit()은 즉시 데이터를 저장하지만, 성능 저하가 발생할 수 있습니다.
7. SharedPreferences의 장점과 단점
장점 | 단점 |
간단한 데이터 저장이 가능 | 데이터가 많아지면 검색 및 관리가 어려움 |
앱을 재시작해도 데이터 유지 | 복잡한 데이터 구조를 저장하기 어려움 |
내부 저장소에서 보호됨 | 보안이 필요한 데이터(비밀번호 등) 저장 시 별도 암호화 필요 |
8. SharedPreferences와 다른 데이터 저장 방법 비교
비교 항목 | SharedPreferences | sSQLite | Room | 파일 저장 |
데이터 유형 | 작은 크기의 키-값 데이터 | 구조화된 테이블 데이터 | SQLite 기반 ORM | 텍스트, 이미지, 문서 |
속도 | 빠름 | 중간 | 중간 | 느림 |
유지 기간 | 앱 삭제 전까지 유지 | 앱 삭제 전까지 유지 | 앱 삭제 전까지 유지 | 필요 시 직접 삭제 |
사용 예시 | 사용자 설정, 로그인 정보 | 대량의 데이터 저장 | 데이터베이스 관리 | 문서, 이미지 저장 |
9. SharedPreferences 사용 시 주의할 점
SharedPreferences를 사용할 때 몇 가지 주의해야 할 사항이 있습니다.
1. 대용량 데이터 저장에 적합하지 않음
- SharedPreferences는 작은 크기의 데이터 저장에 적합하며, 데이터베이스나 파일 저장을 고려해야 합니다.
2. 보안이 필요한 데이터 저장 시 암호화 필요
- SharedPreferences는 일반 XML 파일로 저장되므로, 민감한 정보는 암호화해야 합니다.
3. apply()와 commit()의 적절한 사용
- 데이터 저장 시 성능을 고려하여 apply() 또는 commit()을 적절히 선택해야 합니다.
10. SharedPreferences 활용 사례
활용 분야 | 설명 |
사용자 설정 값 저장 | 다크 모드 설정, 알림 여부 저장 |
자동 로그인 정보 저장 | 로그인 상태 및 계정 정보 유지 |
앱 상태 유지 | 마지막 방문한 페이지 정보 저장 |
간단한 데이터 저장 | 체크박스 상태, 점수 데이터 등 |
11. 정리
- SharedPreferences는 Android에서 작은 크기의 데이터를 영구적으로 저장하는 키-값 저장소로, 사용자 설정 값, 로그인 정보 등을 저장하는 데 적합하다.
- apply()는 비동기 저장으로 성능이 뛰어나지만, commit()은 동기 저장으로 즉시 반영되므로 상황에 맞게 사용해야 한다.
- 보안이 필요한 데이터는 암호화하여 저장해야 하며, 대량 데이터 저장에는 적합하지 않으므로 데이터베이스(SQLite, Room) 사용을 고려해야 한다.
'프로그래밍 > 안드로이드(Android)' 카테고리의 다른 글
Ant란? (1) | 2025.02.24 |
---|---|
Maven이란? (0) | 2025.02.24 |
Gradle이란? (0) | 2025.02.24 |
Android Bundle이란 ? (0) | 2025.02.24 |