2024. 2. 1. 16:09ㆍIT/Android
<미리 보기>
<소스 코드>
<정리>
onCreate - 운영체제가 메모리에 액티비티를 생성할 때 호출된다. 따라서 이 함수 내부에 setContent를 사용하여 레이아웃을 지정하면 액티비티의 생성과 동시에 레이아웃이 지정된다.
onStart - 앱이 onCreate를 호출한 직후에 호출되어 액티비티가 화면에 출력되지만, 아직 앱을 통한 상호작용은 불가능하다.
onResume - 앱이 포그라운드에 위치될 때 호출된다.
*포그라운드는 앱이 화면에 출력되고 유저가 온전히 앱을 사용하는 시기를 말한다.
onPause - 앱이 화면을 출력하고 있지만 포커스를 잃어 상호작용이 불가능할 때 호출되는데, 대표적으로 공유 버튼이 있다.
onStop - 앱이 더 이상 화면에 출력되지 않을 때 호출되는데, 아직 백그라운드에 위치하고 있어 언제든 이어서 실행이 가능하다.
onRestart - 앱이 백그라운드에 위치하고 있는 상태에서 포그라운드로 전환될 때 호출된다.
onDestroy - 운영체제가 앱에 할당한 리소스를 반환할 때 호출되는데, 코드에서 finish()를 호출하거나 구성 변경으로 인해 액티비티를 다시 생성할 때 발생할 수 있다.
*구성 변경은 기기의 상태나 설정이 변경되어 액티비티를 다시 생성하는 프로세스를 의미하는데, 대표적으로 언어 변경, 텍스트 크기 변경, 화면 회전 모드가 있다.
(Mutable)State - 해당 타입으로 선언된 객체는 상태를 추적할 수 있어, 값이 변경되면 리컴포지션이 실행된다.
remember - 해당 타입으로 선언된 객체는 리컴포지션이 실행되어도 값을 유지하고 재사용할 수 있다.
rememberSaveable - 해당 타입으로 선언된 객체는 리컴포지션 뿐만 아니라 구성 변경에도 값을 유지할 수 있다.
<의문점>
메인 액티비티에서 onCreate를 오버라이드 할 때, 부모 클래스 Activity의 onCreate를 호출하는 이유는 무엇일까요?
= 부모 클래스 Activity의 onCreate를 비롯한 다른 Lifecycle 메서드들은 액티비티의 상태를 관리하고 시스템 리소스를 할당하는 등의 중요한 작업을 수행하기 때문에 안정적인 앱 동작을 보장하기 위해선 호출되어야 한다.
State는 이미 불변으로 값이 변경되지 않는데 굳이 추적할 필요가 있을까요?
= 참조하고 있는 객체 상태를 변경할 순 없지만, 새로운 객체를 생성하여 참조하는 객체를 변경할 수 있으므로 추적이 필요하다.
'IT > Android' 카테고리의 다른 글
Jetpack Compose - Navigation, Instrumentation Test (2) | 2024.02.07 |
---|---|
Jetpack Compose - Architecture(ViewModel) (0) | 2024.02.04 |
Jetpack Compose - Material Design Practice (0) | 2024.01.30 |
Jetpack Compose - Material Design, Scaffold, (1) | 2024.01.29 |
Jetpack Compose - Grid Practice (0) | 2024.01.26 |