2018. 8. 17. 14:12ㆍAndroid
onSaveInstanceState() : 액티비티가 강제 종료되는 상황에 대비하여 액티비티의 상태 정보를 저장할 수 있도록 함
ex) 화면을 회전하여 시스템이 강제로 액티비티를 종료하면, 종료 직전에 onSaveInstanceState() 콜백 메소드를 호출하면서 Bundle이라는 객체에 상태를 저장할 수 있음
@Override
protected void onSaveInstanceState(Bundle outState) {
// 상태 저장
outState.putInt(STATE_SCORE, score);
outState.putInt(STATE_LEVEL, level);
// 항상 슈퍼클래스 메소드 호출해야 함
super.onSaveInstanceState(outState);
}
Bundle 객체에 저장된 상태 정보는 액티비티가 재생성될 때 onCreate(), onRestoreInstanceState() 메소드에 전달되어 복원할 수 있음
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// 항상 슈퍼클래스 메소드 호출해야 함
super.onRestoreInstanceState(savedInstanceState);
// 상태 복원
int score = savedInstanceState.getInt(STATE_SCORE);
int level = savedInstanceState.getInt(STATE_LEVEL);
}
Resumed -> onSaveInstanceState() -> Destoryed
ㅇ 상태를 저장하는 onSaveInstanceState()는 onDestory() 메소드가 호출되기 전에 호출됨
ㅇ onSaveInstanceState()는 onPause()와 onStop() 사이에 항상 호출됨
Created -> onRestoreInstanceState() -> Resumed
ㅇ 상태를 복원하는 onRestoreInstanceState()는 onCreate() 메소드가 호출되기 전에 호출됨
ㅇ onRestoreInstanceState()는 강제 종료되었을 때만 호출됨
ㅇ onCreate()에서도 Bundle 객체 이용해서 복원 가능함.
* 화면이 회전될 때 액티비티가 종료되고 다시 생성 => 화면이 회전하기 전의 상태를 저장하려면 onSaveInstanceState() 사용할 수 있음
https://smartstore.naver.com/byrollin?
'Android' 카테고리의 다른 글
안드로이드 생명주기 (0) | 2018.08.17 |
---|---|
안드로이드 누가 이상 버전 다중창 막기 (0) | 2018.08.17 |
밀도(Density) (0) | 2018.08.14 |
안드로이드 9.0(파이) (0) | 2018.08.10 |
원형 프로그레스바 (0) | 2018.07.12 |