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
Activity 생명주기
onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy
'학습' 카테고리의 다른 글
ViewModelProvider, ViewModelStore (0) | 2024.03.29 |
---|---|
Kotlin companion object vs Kotlin object in class vs Java static (0) | 2024.03.22 |
자바 Static, Kotlin Companion, 그리고 Annotation의 Function (0) | 2024.03.16 |
for .. in 은 무엇일까 (0) | 2024.03.08 |
Android에서 ConstraintLayout은 왜 사용하는 걸까 (0) | 2024.03.03 |