안드로이드는 메모리 관리를 위해 자체 CPU에서 제공하고 있는 lifecycle이 있습니다. 특히 여러 작업이 순차적으로 진행되어야 하는 앱을 작성할때에 lifecycle의 statechanged를 감지할 수 있는 기능들이 존재하는데요. 보통은 acitivity나 fragment에서 override하여 사용되고 있습니다.
Activity Lifecycle
onCreate()
- activity 생성됨
- activity 초기 생성시 callback
- 데이터를 목록에 바인딩, viewmodel과 연결
- savedInstanceState 매개변수를 수신하는데 activity 이전 저장 상태가 포함된 bundle 객체가 있습니다. (초기 생성시 bundle의 값은 null)
- UI, 멤버 변수의 기본 설정
onStart()
- activity 시작됨
- 사용자에게 표시되고 activity를 fore-ground에서 상호작용 할수 있도록 준비
onResume()
- activity 재개됨
- 앱이 사용자와 상호 작용
- 포커스가 떠날 때까지 앱이 이 상태에 머무릅니다.
- 전화가 올때
- 사용자가 다른 activity로 이동 할때
- 기기 화면이 꺼질때
- fore-ground에서 사용자에게 보이는 동안 실행해야 하는 모든 기능을 활성화할 수 있다
- 방해되는 이벤트가 발생시 일시중지됨 상태에 들어가서 onPause() 콜백을 호출
onPause()
- activity 중지함
- acitvity가 fore-ground에 있지 않게 되었을때
- 멀티 윈도우 모드에 있을 때
- 새로운 반투명 activity(대화상자)가 열릴때
onStop()
- activity 중단됨
- 새로 시작된 activity가 전체 화면을 차지 하게 될 경우
- 앱은 필요하지 않은 리소스를 해제, 멀티 윈도우 일때도 ON_STOP을 사용하면 UI관련작업이 진행
- cpu를 많이 사용하는 소모하는 종료 작업을 실행
onDestroy()
- activity 소멸됨
- activity를 닫거나 activity에서 finish() 가 호출되어 종료
- 구성 변경(회전 또는 멀티 윈도우) 로 인해 시스템에서 일시적으로 activity를 소멸
- 이 경우에는 즉시 새 activity instance를 생성한 다음 새로운 구성에서 그 인스턴스의 onCreate()가 생성된다
- 이전에 콜백에서 해제 되지 않은 모든 리소스를 해제 해야한다
Reference