2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

SharedPreferences를 사용하여 앱의 상태를 저장하는 방법은 무엇인가요?

Q1: SharedPreferences란 무엇인가요?
A1: SharedPreferences는 안드로이드에서 간단한 키-값 쌍 데이터를 파일 형태로 저장하고 읽을 수 있는 저장소입니다. 앱의 설정, 상태 정보 등을 영구적으로 저장하는 데 주로 사용됩니다.

Q2: SharedPreferences를 어떻게 초기화하나요?
A2: 액티비티나 컨텍스트에서 `getSharedPreferences("파일명", MODE_PRIVATE)` 메서드를 사용하여 초기화합니다. 예를 들어:
```java
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
```
또는 간단히 기본값을 사용하는 경우:
```java
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
```

Q3: SharedPreferences에 데이터를 저장하는 방법은?
A3: `SharedPreferences.Editor` 객체를 얻어 키-값 쌍을 저장하고 `apply()` 또는 `commit()`으로 변경사항을 반영합니다. 예:
```java
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", "user1");
editor.putInt("highscore", 100);
editor.apply(); // 비동기 저장
```

Q4: 저장된 데이터를 불러오는 방법은?
A4: `SharedPreferences`에서 키로 값을 조회하며, 해당 키가 없으면 기본값을 반환합니다. 예:
```java
String username = prefs.getString("username", "defaultUser");
int highscore = prefs.getInt("highscore", 0);
```

Q5: 언제 저장하는 것이 좋은가요?
A5: 중요한 상태 변경 시(예: 설정 변경시, 게임 레벨 완료 시 등) 즉시 저장하는 것이 안전하며, 데이터 무결성을 위해 액티비티 종료 시점에 저장하는 것도 일반적입니다.

Q6: SharedPreferences는 어떤 유형의 데이터를 저장할 수 있나요?
A6: 기본 타입인 String, int, boolean, float, long과 String Set을 저장할 수 있습니다. 복잡한 객체는 JSON 등으로 변환 후 String 형태로 저장해야 합니다.

Q7: 저장된 데이터는 어디에 보관되나요?
A7: 내부 저장소의 앱 전용 디렉토리에 XML 파일 형식으로 저장되며, 다른 앱에서 접근 불가능합니다(MODE_PRIVATE).

Q8: SharedPreferences 데이터를 삭제하거나 초기화하는 방법은?
A8: 특정 키를 삭제하려면:
```java
editor.remove("username").apply();
```
모든 데이터를 삭제하려면:
```java
editor.clear().apply();
```

Q9: 데이터 저장 시 `apply()`와 `commit()`의 차이는 무엇인가요?
A9: `commit()`은 동기적으로 저장 후 결과를 반환하고, `apply()`는 비동기적으로 저장하여 UI 스레드 블로킹을 피합니다. 일반적으로 `apply()` 사용을 권장합니다.

Q10: SharedPreferences를 사용할 때 주의사항은?
A10: 대용량 데이터나 복잡한 객체 저장에는 적합하지 않으며, UI 스레드에서 무거운 작업을 피해야 합니다. 민감한 정보는 암호화 후 저장하는 것이 안전합니다.
SharedPreferences.
작성자: 정지훈 [비회원] | 작성일자: 1년 전 2024-11-24 06:31:57
조회수: 144 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.