앱에서 간단한 데이터를 저장 또는 복원할 때 SharedPreferences를 사용할 수 있다.
이 기능은 앱 내부에 파일을 하나 만들어서 파일에서 데이터를 저장하거나 읽어올 수 있도록 한다.
개발자는 파일에 접근할 필요는 없고 SharedPreferences의 저장과 복원 메서드를 사용하면 된다.
원래는 Application()을 상속받은 전역 어플리케이션 클래스를 만들어서 그 안에 companion object로 SharedPreferences 객체를 하나 생성한 후 모든 클래스 파일에서 사용할 수 있도록 한다.
sharedPreferences 객체를 이용해서 앱을 종료하고 다시 실행했을 때도
저장돼 있는 데이터를 화면에 띄우도록 해보겠다.
생명주기를 이용해보면, onPause()에서 데이터를 저장해놓고, onResume()에서 데이터를 복원한다.

우선 SharedPreferences에 저장해서 띄울 str변수를 데이터 바인딩을 이용해서 하나 만들어두고 쓸 것이다.

xml 파일에 String str을 하나 만들어둔다.

SharedPreferences 객체를 생성하고 onCreate()에서 초기화를 해준다.
onResume() 에는 데이터를 불러오는 메서드를,
onPause()에는 데이터를 저장하는 메서드를 넣어둔다.

각각 저장하고 불러오는 메서드를 onPause()와 onResume()에 넣어준다.

위 처럼 작성하고 앱을 종료하고 다시 실행해 보겠다.

앱이 onPause되고 다시 onResume이 실행되도 데이터가 그대로 유지돼있는 것을 확인할 수 있다.
pref 객체는 getPreferences(이름, 모드)로 불러올 수 있다.
이 코드에서는 SharedPreferences.Editor 객체를 사용해서 edit 메서드를 호출한 후 putOOO 메서드로 데이터를 저장하고 commit 메서드를 호출한 후 저장시킨다.
여기서는 onPause와 onResume으로 구현했지만,
onSaveInstanceState와 onRestoreInstanceState 메서드로도 구현할 수 있다.
추가로 내가 예전에 개발했을 때 SharedPreferences를 사용한 방식은 다음과 같다.
보통은 위에서 설명했듯이 SharedPreferences를 상속받은 후에 전역 어플리케이션 앱에서 구현 후
setString getString을 만들어서 사용한다.

코틀린 코드로 구현되어 있다. (공부는 자바로 하고 있지만, 요즘은 코틀린이 자료도 더많고 최신기술을 사용할 때 유용하다.)
companion object로 prefs 객체를 두었다. 그리고 onCreate()에서 초기화를 시켜준다.

그리고 내가 따로 만든 SharedPreferences 앱이다.
어려운 코드는 따로 없고, 문자열을 저장하고 불러오는 방식이다.
객체를 저장하고 싶다면 코드가 좀 길어지긴 하겠지만 문자열로 저장한후 불러오는 방식을 이용하면 될 것이다.
'안드로이드 > 개념' 카테고리의 다른 글
[Android] Do It! 안드로이드 도전 08. 세 개 이상의 화면 만들어 전환하기 -> 액티비티와 프래그먼트로 구현해보기 (0) | 2021.08.01 |
---|---|
[Android] Do It! 안드로이드 도전 07. 로그인 화면과 메뉴 화면 전환하기 (0) | 2021.07.31 |
[Android] 액티비티의 생명주기 (0) | 2021.07.31 |
[Android] 태스크 관리 (0) | 2021.07.31 |
[Android] 플래그와 부가 데이터 - feat. Parcelable과 양방향 데이터 바인딩 사용 (0) | 2021.07.31 |