마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SharedPreference 에서 키-값에 대한 질문입니다

0 추천

안드로이드 초보입니다.. 아무리 찾아봐도 만족할만한 답변을 못찾고있고..

SharedPreference < 이 개념도 확실치 않아서 여기다 물어봅니다..

 

안드로이드강좌를 보고있고, 안드로이드 액티비티 라이프사이클을 배우는중입니다

순서에 맞게 코딩을 따라하고있는데 아래와 같은 부분이 나왔습니다

  1. Check to see if the header is currently visible, and if so put that visibility state into the state Bundle with the putBoolean() method and the key "reply_visible".
 
저기서 putBoolean 에 키는 "reply_visible"로 주고, 값은 true 로 주라고해서
 
if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
        outState.putBoolean("reply_visible", true);
    }
 
이렇게 했는데 저 키에 해당하는 "reply_visible"이 어디서 나왔는지를 모르겠습니다
 
 
SharedPreference 로 데이터를 저장하려면 Editor 클래스의 putter 함수를 이용하여 넣는다고하는데
저 key 는 임의로 지정하는것인지 아무것이나 써도되는것인지 왜 reply_visible 인지 이해가 가질 않습니다 ㅠㅠ
 
설명 부탁 드립니다..
wngustmd (150 포인트) 님이 2022년 1월 11일 질문

1개의 답변

0 추천
 
채택된 답변
질문이 Lifecycle과 SharePreferences가 섞여 있어서 좀 헷갈렸는데요.

올리신 코드는 Activity의 onStop에서 사용되는 Bundle인 것 처럼 보이네요. "reply_visible"은 님이 저장하고 싶은 값에 대한 키값으로, 님이 원하시는 문자열을 사용하면 됩니다. 대신 저장할 때, "reply_visible"을 키값으로 사용하셨으므로, 값을 가져올 때도 같은 키값을 사용하셔야 겠죠.

onStop에서 Bundle 에 값을 저장하는 이유는 크게 다음 두가지 경우 때문입니다.

1. Configuration change: 디비이스 회전, 시스템 설정에서 폰트 변경, 다크모드 설정, 키보드 설정 등등이 발생할 경우,
안드로이드 시스템이 현재 액티비티를 종료시키고 다시 생성을 합니다. 이 경우 onCreate의 savedInstance가 null 이 아닌 상태로 넘어오며, onStop의 Bundle에서 저장한 값도 넘어오게 됩니다. 이값을 이용해서 기존 상태를 복구해줄 수 있습니다.

2. Process death:  앱이 백그라운드에 있을 때, 안드로이드 시스템은 메모리 등이 부족하거나 하다고 판단되면, 앱을 죽일 수 있습니다. 이 때 앱을 타스크 매니저에서 다시 시작하게 되면, 마지막에 사용했던 액티비티만 다시 생성을 해주는데, 복구해야할 값이 있다면, Bundle 에 저장을 했다가 복구를 해주는데 사용합니다.

SharedPrefereces는 XML 파일입니다. XML은 key + value 형태로 데이터를 저장합니다. 개발 시에 얘뮬레이터에서 열어보실 수도 있어요. 이것도 Bundle과 마찬가지로 님이 원하는 문자열을 키값으로 사용하면 됩니다.
spark (224,800 포인트) 님이 2022년 1월 12일 답변
wngustmd님이 2022년 1월 12일 채택됨
너무감사합니다!

그러니까 해주신말씀은 reply_visible < 로 제가 선언을 하면 값을 가져올때도 그 선언한 값을 사용하면된다는 뜻이고
저 String 키 는 제가 어떻게 선언해도 문제가없다는 뜻이군요 ㅠㅠ

저는 갑자기 "reply_visible" 이라는게 튀어나와서 무엇인가 했는데 설명해주셔서 감사합니다!
네. 알기 쉬운 이름을 사용하시면 됩니다.
...