공식문서
onCreate()
activity가 처음 실행 될때 자동으로 호출, 전체 수명 주기 동안 한 번만 발생
- activity에서 사용되는 리소스를 초기화하고 인터페이스 요소를 설정하는 등의 작업을 수행
- activity 생명주기에서 onCreate()는 초기화 단계에서 가장 중요한 단계이므로, activity의 기능과 동작을 설정하는 데 필수적인 작업들을 이 메시드 내에서 수행해야 한다.
- 화면 회전이 발생 했을 때의 처리도 수행한다.
다음과 같은 작업을 수행
1. 레아아웃 설정
- setContentView() 메서드를 사용하여 activity의 UI레이아웃을 설정한다.
- setContentView : XML 파일에 정의된 레이아웃 리소스를 로드하고, activity 화면에 표시될 UI요소 들을 구성한다.
- 변수 및 객체 초기화
- activity에서 사용한 변수, 객체 또는 데이터 구조를 초기화 한다.
- ex. 데이터베이스 연결, 네트워크 통신, 리스너 등을 초기화
- 이벤트 처리기 등록
- UI 요소에 이벤트 처리기를 등록하고, 사용자 입력 또는 시스템 이벤트에 대한 응답을 처리할 수 있도록 한다.
- 이전 상태 복원
- activity가 이전에 종료되었던 경우, savedInstanceState 매개변수를 사용하여 이전 상태를 복원한다.
- 이를 통해 activity가 이전에 있던 상태를 유지하거나 데이터 손실을 방지할 수 있다.
onStart()
activity가 화면에 나타나기 시작할 때 실행되는 단계
-activity가 포그라운드로 진입하여 사용자에게 보이기 시작할 때 필요한 초기화 작업을 수행하는 데 사용 된다.
- onStart()가 호출되면 activity는 사용자에게 보여지기 위한 준비를 마치고, activity를 포그라운드에 보내 상호작용할 수 있도록 준비한다.
- onStart() 메서드는 빠르게 완료 되고 콜백 완료 후 onResume() 메서드 호출
다음과 같은 작업을 수행
1. UI 업데이트
- activity의 UI를 업데이트하고, 사용자에게 보여지는 요소들을 초기화 한다.
- ex. 데이터의 변경 사항을 반영, 동적으로 생성된 UI요소를 추가 및 업데이트
onResume()
activity가 포그라운드로 나타나고 사용자와 상호작용할 수 있는 상태가 되었을 때 호출
- 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때(ex. 전화가 오거나, 다른 activity로 이동, 화면이 꺼짐)까지 앱이 이 상태에 머무른다.
- 포그라운드에서 사용자에게 보이는 동안 실행해야 하는 모든 기능을 활성화활 수 있다. (ex. 카메라 미리보기 시작)
- activity가 일시중지되면 구성요소를 해제 하고 다시 재개됨 상태로 전환될 때마다 필요한 초기화 작업을 수행해야 한다.
- 다른 액티비티가 보여지고 다시 이 액티비티가 보여 질 때 호출된다.
onPause()
activiy가 포그라운드에서 백그라운드로 이동할 때 호출되는 메서드
- acitivty가 일시 중지 및 재개되는 상황에서 사용자 경험을 관리하는 데 유용한 콜백 메서드
- activity가 더 이상 사용자와 상호작용하지 않는 순간에 호출(ex. 다른 activity 시작되어 현재 activity가 일부 가려준 경우, 전화가 오거나 알림이 표시되는 등의 이벤트가 발생할 경우)
- onPause()가 호출되면 activity는 더 이상 화면에 보이지 않는 상태가 되지만 메모리에는 남아 있고, 이 상태에서 activity는 일시중지 되었지만 시스템 리소스를 소유하고 있기 때문에 백그라운드에서 포그라운드로 돌아올 때까지 종료되지 않고 유지될 수 있다.
다음과 같은 상황에서 유용하게 사용가능
1. activity의 현재 상태를 저장하고자 할 때(ex. 임시 데이터 저장)
2. 실행 중인 애니메이션, 타이머 또는 기타 백그라운드 동작을 일시 중지하고자 할 때
3. 시스템 리소스를 해제하고, 카메라 또는 센서와 가은 하드웨어 리소스를 해제하고자 할 때
onStop()
activity가 화면이 완전히 보이지 않게 될 때 실행 이는 새 activity가 화면 전체를 차지할 겨우에도 적용
- onStop()을 사용하여 CPU를 비교적 많이 소모하는 종료 작업을 실행해야 한다.
ex. 정보를 데이터베이스에 저장할 적잘한 시기를 찾지 못한 경우 저장할 수 있다.
다음과 같은 작업을 수행
- 사용자 입력 정리
- onStop()에서는 activity가 더 이상 사용자 입력을 받지 않으므로, 관련된 리스너 등을 해제하거나 입력 이벤트 처리를 중지하는 등의 작업을 수행
ex. 애니메이션 일시중지, 위치 업데이트를 세밀함 -> 대략적으로 전환
- activity가 백그라운드로 들어가면 불필요한 자원 소모를 방지하고 메모리 누수를 방지하는데 도움이 된다.
onDestroy()
activity가 소멸되기 전에 호출된다.
1. 사용자가 activity를 완전히 닫거나 finish()가 호출되어 activity가 종료되는 경우
2. 구성 변경(ex. 기기 회면 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 activity를 소명시키는 경우
다음과 같은 작업 수행
1. 리소스 해제
- 이전의 콜백에서 아직 해제되지 않은 모든 리소스를 해제해야 한다.
-ex) activity에서 열린 파일, 데이터베이스 연결, 네트워크 연결
- 메모리 누수를 방지하고 다른 애플리케이션 컴포넌트가 해당 리소스를 사용할 수 있도록 한다.
- 스레드 종료
- 백그라운드에서 실행 중인 스레드나 작업을 종료해야 한다.
- ex. 네트워크 요청을 처리하는 스레드, 백그라운드 작업 스레드 등을 안전하게 종료할 수 있다.
- 등록된 리스너 해제
- 데이터 저장
- 활동이 소멸되기 전에 모든 데이터를 정리해야 한다.
- 다음에 activity가 다시 생성될 때 이전 상태를 복원하거나, 다른 컴포넌트에 전달하거나, 영구 저장소에 보관하기 위해 필요한 작업이다.
- ex. 사용자 입력 양식의 내용을 저장, activity 상태를 저장
Activity가 실행 : onCreate -> onStart -> onResume
다른 Activity의 화면이 보일 때 : onPause -> Activity 일시 정지
다시 Activity의 화면이 보일 때 : onResume -> Activity 다시 동작
Activity의 화면이 완전히 보이지 않게 될 때 : onPause -> onStop
Activity의 화면이 다시 보여지게 될 때 : onRestart -> onstart -> onResume -> Activitiy 다시 동작
Activity가 종료될 때 : onPause -> onStop -> onDestroy