Android 01 - Activity LifeCycle
Activity
액티비는 안드로이드 4대 컴포넌트 중에 하나이다. 앱을 실행했을 때 보이는 화면이다. 생명주기 메서드는 아래와 같다.
- onCreate()
- 액티비티가 최초 생성될 때 호출된다.
- 액티비티의 초기화 작업(레이아웃 설정, 데이터 바인딩, 리소스 초기화)를 수행한다.
- 한번만 호출된다.
- 생성된 화면 요소를 메모리에 로드한다.
- onStart()
- 액티비티가 사용자에게 보여지기 시작할 때 호출된다.
- 화면이 표시되기 직전에 준비 상태로 들어간다.
- onResume()
- 액티비티가 사용자와 상호작용 가능한 상태로 전환될 때 호출된다.
- 화면이 포커스를 얻고, 이벤트를 받을 수 있는 상태이다(터치, 키 입력)
- onPause()
- 액티비티가 다른 화면에 의해 부분적으로 가려지거나 비활성화될 때 호출된다.
- onStop()
- 액티비티가 완전히 화면에서 보이지 않을 때 호출된다.
- onDestroy()
- 액티비티가 완전히 종료될 때 호출된다.
- 시스템이 메모리를 회수하거나, 사용자가 앱을 종료할 때 호출된다.
- onPause() → onStop()
- 현재 액티비티를 종료하지 않고 새로운 액티비티가 만들어질 때(Stopped) 상태
- onStart() → onResume()
- 두 메서드가 연속적으로 실행되고 Resumed 상태로 변경된다.
생명주기를 쉽게 이해하려면 실제 화면에 표시 유무를 생각하면 된다. 먼저 최초로 앱을 실행하면 onCreate()가 호출된다. 이때 초기화 관련 작업을 하면 좋다. 다음으로 onStart()가 호출이되고 이 시점부터 사용자가 액티비티를 볼 수 있다. 그리고 액티비티가 실제 사용자와 상호작용이 가능한 포그라운드에 위치하면 onResume()이 호출된다. 이 상태를 액티비티가 실행 중인 것으로 본다. 반대로 액티비티가 실행 중인 상태에서 사용자와 상호작용이 불가능한 상태, 즉 포커스를 잃은 상태가 되면 onPause()가 호출된다. onStop()은 액티비티가 더 이상 보이지 않을 때 호출된다. 그리고 액티비티가 종료되거나 앱 프로세스 자체가 종료되면 onDestroy()가 호출된다. 주의할 점은 불투명한 새로운 액티비티가 최상단으로 올라와서 기존 액티비티가 완전히 보이지 않게 되면 onPause()에 이어서 바로 onStop()까지 호출된다. 안드로이드 열시미 해야겠다. 코루틴도 공부해야지