EditText가 입력된 text를 복원하는 과정

DoDoBest

·

2024. 3. 20. 22:58

EditText는 입력한 state를 복원해준다.

EditText에 입력한 값은 별도의 State로써 직접 관리하지 않아도, 입력한 값이 복원되어 사용자에게 그대로 보입니다.

단, xml에서 id를 설정해준 경우에만 동작합니다.

 

 

로그로 찍어보면 어떨까요?

onCreate 함수에서 EditText에 있는 text 값을 찍어본 결과, 입력한 값이 아닌 빈 값이 출력됐습니다. 왜 그럴까요?

 

 

EditText의 동작 원리

이유는 EditText에 입력된 값이 복원되는 것은 savedInstanceState를 이용한 방식이기 때문입니다. onCreate에서도 savedInstanceState를 파라미터로 입력받고 있기에 onCreate에서 복원될 수도 있지만, onCreate에서 복원되지 않은 경우에는 onRestoreInstanceState 함수에서 호출됩니다.

onRestoreInstanceState callback 함수는 onStart가 완료된 이후 호출됩니다. onStart는 onCreate보다 뒤에 호출되기에 onCreate에서 로그를 찍으면 빈 값이 출력되었던 것입니다.

 

 

 

This callback is called only when there is a saved instance previously saved using
onSaveInstanceState(). Some state is restored in onCreate(). Other state can optionally
be restored here, possibly usable after onStart() has completed.
The savedInstanceState Bundle is same as the one used in onCreate().

https://developer.android.com/guide/components/activities/activity-lifecycle#oncreate

 

활동 수명 주기  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

 

Activity 생명주기

onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy