지난 포스팅에서 Intent 를 사용하여 데이터를 전달해 보았다.
데이터를 전달하고 전달 받은 데이터를 액티비티에 띄웠지만
역시 가장 큰 문제는, 데이터를 저장할 수 없었다는 것이다.
데이터 전달 후, 앱을 종료하고 다시 실행했을 때
전달했던 데이터가 사라져있다면 무슨 의미가 있을까.
그래서 이번 포스팅에서는 데이터를 저장하는 방법에 대해 알아보겠다.
데이터를 저장하는 대표적인 방법은 약 3가지로 볼 수 있다.
1. SharedPreferences
데이터를 앱 내 폴더에 파일 형태로 저장한다.
주로 간단한 데이터를 다룰 때 사용한다.
2. Files
데이터를 기기의 내/외부 저장소에 파일 형태로 저장한다.
주로 이미지, 영상 등의 대용량 객체를 다룰 때 사용한다.
3. DataBase
데이터를 기기가 아닌 특정 서버에 저장한다.
주로 여러 사용자에 의해 공유되어 사용될 목적인 데이터를 다룬다.
이번 포스팅에서는 데이터 저장이 처음이라는 가정하에,
비교적 간단한 데이터를 저장할 것이기 때문에 SharedPreferences 를 사용해 볼 것이다.
2, 3번 방법은 나중에 해당 기능을 필요로 할 때 포스팅 하겠다.
SharedPreferences 란?
안드로이드에서 기본적으로 제공하는 Key - Value 방식의 데이터 관리 기능이다.
데이터베이스(DB)에서 관리할 필요가 없는, 비교적 간단한 데이터를 관리한다.
SharedPreferences 특징
대표적인 특징은, 앱 내 폴더에 저장되는 방식을 이야기할 수 있다.
데이터가 '앱 내' 에 저장된다는 것은,
앱이 제거되면 해당 데이터 또한 같이 제거된다는 이야기다.
DB와 사용처를 확실하게 구분 지어 줄 수 있는 가장 큰 특징이다.
이해를 돕기 위해 게임을 예시로 설명한다.
어떤 게임 앱에서 사용자가 레벨을 10까지 성장시키고 앱을 제거했다고 가정한다.
만약, 사용자의 레벨 데이터를 SharedPreferences 에 저장했다면,
사용자가 나중에 앱을 재설치했을 때 레벨이 1로 초기화되어 있을 것이다.
앱을 이용했던 사용자의 데이터가 제거된다는 것은,
사용자의 입장에서 부정적인 경험일 수밖에 없다.
이처럼, 보통 사용자의 데이터를 다룰 때에는
회원가입 - 로그인 방식을 통해 DB에서 관리하기 마련이다.
그렇다면, SharedPreferences 는 어떤 경우에 주로 사용할까?
SharedPreferences 사용처
SharedPreferences 역시, 개발자에 따라 사용하기 나름이겠지만
대표적으로 사용되는 예시가 몇 가지 있다.
1. 앱 로그인 정보 저장 (자동 로그인, 로그인 유지)
모바일의 경우, 보통 하나의 기기는 한 사용자가 사용한다.
따라서, 앱을 이용할 때마다 매번 로그인을 한다면 번거로울 수밖에 없다.
대부분의 앱은 설치한 후, 한 번 로그인하면 자동 로그인이 활성화 될 것이다.
(독자의 핸드폰에 있는 카톡이나 SNS를 생각해보자)
그리고, 로그인이 유지되어 있는 앱을 삭제 & 재설치하면
로그인이 풀려 있는 상황을 확인할 수 있을 것이다.
해당 앱은 로그인 기록을 SharedPreferences 에
데이터로 저장했다는 것을 확인할 수 있다.
2. 앱 환경 설정 변동 사항 데이터 저장
앱 내 테마 변경 사항, 앱 내 음량 변경 사항,
앱 내 언어, 폰트 변경 사항 등
앱을 삭제 & 재설치해도 큰 문제가 없는 요소들을
SharedPreferences 에 저장하기도 한다.
DB에 반드시 저장하지 않아도 될 요소들은 DB의 과부하를 덜어주기 위해
SharedPreferences 를 이용하기도 하는 것이다.
이번 포스팅에서는 데이터의 저장 방식 중 하나인,
SharedPreferences 에 대해서 알아보았다.
내용이 길어질 것 같아, SharedPreferences 사용 예제는
다음 포스팅에 이어서 게시하도록 하겠다.
'Android (안드로이드)' 카테고리의 다른 글
[Android] 지도 API 종류와 선택 - 구글 맵, 카카오 맵, 네이버 맵 (0) | 2023.05.09 |
---|---|
[Android] SharedPreferences (2) - 사용 예제, 응용 / 데이터 저장 / 데이터 불러오기 / 데이터 삭제 / split() 메서드 (0) | 2022.09.07 |
[Android] 애니메이션 효과 / animation / View 움직임, 이동 / 트윈 애니메이션 (2) | 2022.09.06 |
[Android] visibility 속성 / visible, invisible, gone / 표시, 숨김 (0) | 2022.09.02 |
[Android] 토스트 메시지 / 커스텀 토스트 / Toast (0) | 2022.09.02 |