진짜 개발자
본문 바로가기

App/Android

Android - 상태 저장 (SavedInstanceState)

728x90


@액티비티의 종료


액티비티가 소멸되는 상황은 아래와 같다

(이밖에도 더 있다)


ㄱ. 사용자가 Back 버튼을 누른다


ㄴ. 액티비티가 finish()를 호출한다


ㄷ. 액티비티가 정지되어있는 상태에서 전면에 있는 액티비티가 더많은 리소스를 요구하여 

   시스템이 메모리 회수를 위해 액티비티를 소멸시킨다.


우리는 액티비티가 더 이상 필요없을 때 종료를 한다

하지만 액티비티의 상태는 때때로 저장되어야 하는 경우가 있다

그러한 경우는 다음과 같다


1. 예기치 못하게 시스템에 의해 강제 종료된 경우 지금 진행중이던 데이터를 다시 불러오기 위해 저장


2. 그 순간에만 필요한 데이터가 아닌 축적, 저장 되어야 하는 데이터인 경우(ex. 게임 캐릭터 정보)



@상태저장


ㄱ,ㄴ :  액티비티가 정상적으로 종료되는 경우 영구적으로 저장할 필요성이 있는 데이터는 onPause()에서 

          SharedPreference를 이용하여 저장을 해준다


ㄷ    : 시스템에 의해 강제종료 되는 경우 onSavedInstaceState() 에서 저장을 한다.

         또한 onRestoreInstanceState() 에서 저장된 데이터를 다시 로드한다 ( 화면을 전환하는 경우도 이에 해당)


 * 저장 방법


  1. SharedPreference - 파일을 생성하여 저장하는 방법 (영구 저장)

 

  2. Sqlite - 안드로이드에서 지원하는 데이터베이스를 이용하여 이 역시 파일형태로 저장(영구 저장)

      

     (SharedPreference vs Sqlite - http://www.androidside.com/bbs/board.php?bo_table=b49&wr_id=118449)

   

  3. onSavedInstanceState() 에서 Bundle에 저장 - 앱이 죽기 전까지 만 데이터가 존재