본문 바로가기
안드로이드

액티비티 상태 저장 onRestoreInstanceState(), onSaveInstanceState()

by 디지털노마더 2021. 3. 29.

안드로이드 앱 개발 시, 태블릿의 경우 사용자마다 가로/세로 회전(화면전환)을 이용하는 경우가 있습니다.

 

화면전환 시, 안드로이드 생명주기에 따라서 onPause() → onStop() → onDestory() onCreate() → onStart() 로 진행됩니다.

 

한 마디로 액티비티를 새로 그려주게 됩니다. 

만약에 사용자가 회원가입 과정 중에, 다수의 개인정보를 입력하고 있다가 화면전환을 했다는 이유로 입력했던 모든 정보가 초기화되면서 새로 입력해야 한다면 큰 문제가 될 것입니다.

 

이럴 때, onSaveInstanceState(), onRestoreInstanceState() 함수를 사용하여 데이터를 보관 및 다시 불러오면 초기화 현상을 막을 수 있습니다.

 

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
}

 

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onRestoreInstanceState(savedInstanceState, persistentState);
}

 

▷ onSaveInstanceState()

  : onDestory() 함수가 호출되기 전에 call

  : onPause() → onStop() → onSaveInstanceState() → onDestory() 

 

▷ onRestoreInstanceState()

 : onCreate() 함수 호출 이후에 call

 : onPause() → onStop() → onDestory() → onCreate() → onRestoreInstanceState()

 

※ 참고출처

duzi077.tistory.com/286

50billion-dollars.tistory.com/entry/Android-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%99%94%EB%A9%B4-%ED%9A%8C%EC%A0%84-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EB%9D%BC%EC%A7%80%EB%8A%94-%ED%98%84%EC%83%81-%EB%A7%89%EA%B8%B0onSaveInstanceState-onRestoreInstanceState

댓글