SharedPreferences에 값이 제대로 들어가는 지 테스트했었는데

 

테스트 할 당시에는 제대로 값이 남아있는 듯 보였으나 나중에 스마트폰을 재부팅한 뒤 다시보니

 

아무런 데이터도 저장되어있지 않은 것을 발견하였다.

 

확인해본 결과 환경설정->어플리케이션 메뉴에서 어플을 찾아 강제종료버튼(작업관리자에 표시되지 않더라도 활성화되어있다)을 누르고 나면

 

다시 실행했을 때 SharedPreferences 값이 하나도 남아있지 않음을 알 수 있었다.

 

메모리 혹은 임시파일 형태로 저장되는 것이라고 추측된다.

 

해결 방법은 다음과 같다.

 

 

SharedPreferences의 Editor를 사용하기 전에 Editor 객체의 clear() 메소드를 호출했더니 문제가 해결되었다.

 

SharedPreferences.Editor ePref = pref.edit();
ePref.clear();
ePref.putStringSet(XXX , XXX);
ePref.apply();

 

 

Editor에 값을 갱신한 후 commit() 또는 apply()를 빠뜨리면 아예 저장이 되지 않으므로 주의하자.

 

또한 clear()를 호출한 후에는 SharedPreferences 값이 지워지므로 보존해야 할 데이터는 따로 마련한 변수 등에 저장해두어야 한다.

Posted by Kugi
,