
생명주기 각 단게 간의 전환을 위해 생명주기 클래스는 위와 같은 콜백을 호출함 (onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy())
사용자가 액티비티를 벗어나기 시작하면 시스템은 액티비티를 해체할 메서드를 호출함
액티비티는 여전히 메모리 안에 남아 있으며 포그라운드로 다시 돌아올 수 있음, 해당 액티비티로 다시 돌아오는 경우 사용자가 종료한 지점에서 활동이 다시 시작됨
몇 가지 예외를 제외하고 앱은 백그라운드에서 실행된 때 액티비티를 실행할 수 없음!!
onCreate()
시스템이 먼저 액티비티를 생성할 때 실행되는 것으로 필수적으로 구현해야 하는 콜백임
이 메서드에서는 전체 생명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행함
ex) 데이터를 목록에 바인딩, 액티비티와 뷰모델 연결, 일부 클래스 변수 인스턴스화
savedInstanceState 매개변수를 수신 → 이는 액티비티의 이전 상태가 포함됨 Bundle 객체 (이번에 처음 생성된 액티비티의 경우 객체 값은 null 임)
onStart()
이 콜백이 호출되면 액티비티가 사용자에게 표시되고, 앱은 액티비티를 포그라운드에 보내 상호작용 할 수 있도록 함
ex) 앱이 UI를 관리하는 코드를 초기화함
onResume()
활동이 포그라운드에 표시됨
앱이 사용자와 상호작용함
어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무름
ex) 전화가 오거나, 사용자가 다른 활동으로 이동하거나, 기기 화면이 꺼지는 경우
이 상태에서 생명주기 구성 요소가 포그라운드에서 사용자에게 보이는 동안 실행해야 하는 모든 기능을 활성화 할 수 있음
onPause()
시스템은 사용자가 액티비티를 떠나는 것을 나타내는 첫 번째 신호로 이 메서드를 호출함
활동이 포그라운드에 있지 않게 되었다는 것을 나타냄
앱이 이 상태에 들어가는 이유
onPause() 상태의 액티비티는 멀티 윈도우 모드에서 여전히 보이는 상태일 수 있으므로 UI 관련 리소스와 작업을 완전히 해제하거나 조정할 때는 onStop()을 사용하는 것이 좋음
onPause()는 아주 잠깐 실행되므로 저장 작업을 실행하기에는 시간이 부족할 수 있음
→ onPause()를 사용해서 애플리케이션 또는 사용자의 데이터를 저장하거나, 네트워크 호출을 하거나, 데이터 베이스 트랜잭션을 실행해서는 안 됨
→ 메서드 실행이 끝나기 전에 완료되지 못할 수도 있음!
→ 부하가 큰 종료 작업은 onStop()에서 실행
onPause() 상태에 온 후 액티비티가 다시 시작되거나 사용자에게 완전히 보이지 않게 될 때까지 이 상태에 머무름
onStop()
onRestart()onDestroy()onDestroy()
