프로그래밍/안드로이드(Android)

SharedPreferences란?

TechN 2025. 2. 24. 00:16
반응형

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 sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
         SharedPreferences.Editor editor = sharedPreferences.edit();
         editor.putString("username", "AndroidUser");
         editor.putInt("age", 25);
         editor.putBoolean("isLoggedIn", true);
         editor.apply();

      2. 데이터 불러오기

      * 저장된 데이터를 불러올 때는 get 메서드를 사용합니다.

         SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
         String username = sharedPreferences.getString("username", "Guest");
         int age = sharedPreferences.getInt("age", 0);
         boolean isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false);

   3.  데이터 삭제하기

      * 특정 데이터만 삭제하거나 모든 데이터를 삭제할 수 있습니다.

         SharedPreferences.Editor editor = sharedPreferences.edit();
         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. 정리

  1. SharedPreferences는 Android에서 작은 크기의 데이터를 영구적으로 저장하는 키-값 저장소로, 사용자 설정 값, 로그인 정보 등을 저장하는 데 적합하다.
  2. apply()는 비동기 저장으로 성능이 뛰어나지만, commit()은 동기 저장으로 즉시 반영되므로 상황에 맞게 사용해야 한다.
  3. 보안이 필요한 데이터는 암호화하여 저장해야 하며, 대량 데이터 저장에는 적합하지 않으므로 데이터베이스(SQLite, Room) 사용을 고려해야 한다.
반응형

'프로그래밍 > 안드로이드(Android)' 카테고리의 다른 글

Ant란?  (1) 2025.02.24
Maven이란?  (0) 2025.02.24
Gradle이란?  (0) 2025.02.24
Android Bundle이란 ?  (0) 2025.02.24