티스토리 뷰

하나의 액티비티에서 작업을 한다음 다음 액티비티로 넘어가더라도 이전의 액티비티의 상태정보를 가지고 작업을 할 수 있어야 한다.


이런 경우에 액티비티의 수명주기 메서드인 onPause(), onResume()을 이용해서 액티비티가 멈추거나 다른 액티비티에 의해 가려질 때 데이터를 저장하고, 액티비티가 다시 보이거나 새로 시작될 때 저장된 데이터를 호출하는 방식으로 상태정보를 저장하고 가져올 수 있다.



SharedPrefereces타입은 데이터를 저장하는 기능을 제공하는 클래스이다.

SharedPrefereces는 그 자체로 인스턴스를 생성하고 참조할 수 없는 인터페이스라서 참조하는 방법은 Context의 자손클래스에 정의된 getSharedPrefereces()메서드를 호출해서 참조할 수 있다. 이 메서드의 반환 타입이 SharedPrefereces이기 때문이다.


그리고 실제로 데이터를 저장하는 기능을 하는 타입은 Editor인터페이스인데 이 Editor는 SharedPrefereces인터페이스의 내부 인터페이스로 정의되어 있기 때문에 SharedPrefereces.Editor로 타입의 참조변수를 만들고 SharedPrefereces타입의 참조변수의 editor()메서드를 Editor가 참조받을 수 있다.


설명한대로 코드를 만들면..

SharedPreferences sp = getSharedPreferences("testKey", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();

//데이터를 저장하는 방법
editor.putInt("count",count);
editor.commit();

//데이터를 불러오는 방법
if(sp != null && sp.contains("testKey")){
   int result =  sp.getInt("count", 0);
}

//데이터를 초기화 하는 방법
editor.clear();
editor.commit();

위와 같은 방식으로 데이터를 저장하고 불러오고, 삭제할 수 있다.

그리고 데이터를 저장하거나 삭제할 때는 꼭 commit()메서드를 호출해야 적용이 된다.




다음은 액티비티 수명주기 메서드와 SharedPrefereces를 이용해서 데이터를 저장하고, 불러오고, 삭제하는 방식으로 테스트 해 본 코드이다.










Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday