Activity란 ?
- 사용자 인터페이스(UI)를 구성하는 앱의 기본 단위. 하나의 화면이 하나의 Activity 라고 볼 수 있음.
- Activity는 화면을 구성하는 layout (xml)파일과 화면에서 동작을 정의 하는 class 파일로 구성.
- 안드로이드 4대 컴포넌트 중 하나(Activity, BroadCastReceiver, Service, ContentProvider)
특징
- 안드로이드 Acitivity 클래스의 sub 클래스로 생성 되어야함.
- 다른 액티비티와는 완전 독립적으로 구현됨.
- 액티비티 간 메소드 직접 호출 불가
- Intent와 Content Provider를 이용하여 액티비티 공유가 가능.
Activity LifeCycle
- Activity LifeCycle 이해를 위해서는 6개의 콜백(onCreate, onStart, onResume, onPause, onStop, onDestory)이 제공되며 어떤 상태일 때 해당 콜백이 호출 되는지 알아야 함.

- onCreate
: 안드로이드 시스템이 Activity를 생성할 때 실행되는 메소드로, LifeCycle 동안 한 번만 호출 됨.
: View, Data Binding을 사용하여 UI 구성 Layout과 연결하고 ViewModel과의 연결 또는 클래스 인스턴스 생성.
: Binding 사용하지 않으면 setContentView 메소드 호출.
: 이전 Activity의 상태를 저장하기 위해 생성 시 매개변수 존재. Activity 첫 실행 시 매개변수 null 값
- onStart
: 처음 생성 이후 호출될 때와 onRestart 콜백을 수신 후 재시작될 때 호출
: onCreate 이후 시작상태가 되었고, 시스템은 연달아 onStart, onResume 콜백을 호출
: onStart에서는 Activity가 사용자에게 표시되고, 포그라운드로 이동할 준비
: 빠르게 완료가 되고 onResume 콜백을 호출
- onResume
: onResume이 호출된 이후에만 Activity가 포그라운드 상태가 되었고 사용자와 상호작용을 할 수 있음
: 실제로 setContentView 결과가 보여지는 부분
: 재시작 이후 백그라운드에 있던 Activity가 포그라운드에 상태가 되고 모든 화면에 해당 Acitivty가 가득 찬 모습이어야 함
: 전화가 오거나 , 홈버튼을 눌러 해당 Activity의 화면이 꺼지는 이벤트가 발생하기 전까지 onResume 상태에서 머무르게 됨
: 화면이 꺼지는 이벤트가 발생하면 onPause 가 호출되고 다시 재개가 되면 onResume 콜백이 호출
: onResume과 onPause는 대칭적으로 리소스/데이터 초기화와 해제
- onPause
: Activity가 포그라운드에서 백그라운드로 바뀌는 시점으로 화면의 일부가 가려진 상태일 때 onPause 콜백이 호출
: 이벤트가 발생하여 새로운 Acitvity가 포그라운드로 나오기전까지는 onPause 상태에 있다가 포그라운드로 나오는 순간 모든 화면이 가려지면 onStop 콜백을 호출
: Dialog Activity나 투명 Acitivty가 위에 뜰 경우에도 onPause상태
: onPause는 포그라운드에서 백그라운드로 전환되는 시점으로 화면의 일부가 가려진 상태에 호출되고, onStop은 완전히 화면이 가려지면 호출
: onPause는 아주 잠깐 실행되므로 현재 화면을 구성하는 데이터를 저장하거나, 네트워크 호출 또는 DB 트랙잭션과 같은 시간 소요가 있는 작업들을 실행해서는 안됨
- onStop
: Activity가 이벤트로 인해 새로운 화면이 나타나서 전체 화면을 가리게 되면 onStop 이 호출
: onStop 에서는 Activity에서 이제 사용되지 않을 리소스들을 해제하거나 현재 상태 정보를 저장하기 위한 DB 작업들을 진행
: onStop에서 중요한 점은 Activity 객체는 아직 메모리 안에 머무르게 됨
: Activity가 다시 재개되면 이 정보들을 다시 호출할 수 있음
: 재개 시 onCreate에서 생성한 구성요소는 다시 초기화 할 필요 없고 레이아웃에 있는 각 View 객체도 현재 상태를 기록하기에 저장 및 복원할 필요 없음
- onDestory
: Activity가 완전히 소멸되기 전에 onDestory 콜백이 호출
LifeCycle 호출 순서
- 시작할 때 : onCreate → onStart → onResume
- 화면 회전할 때 : onPause → onStop → onDestory → onCreate → onStart → onResume
- 홈 버튼 클릭 시 : onPause → onStop
- 홈 이동 후 다시 돌아올 때 : onRestart → onStart → onResume
- 백 버튼 클릭하여 액티비티 종료 시 : onPause → onStop → onDestory
Activity 전환 시 생명주기 메소드 호출
- Activity A에서 Acitivity B를 시작할 때 메소드들이 어떻게 호출되는지도 알 필요가 있음.
: Activity A는 onPause 메소드를 실행. (Activity A가 백그라운드로 이동)
: Activity B는 onCreate, onStart, onResume 메소드를 실행하여 포그라운드 상태로 전환
: Activity B가 onResume까지 호출된 이후에는 포그라운드 상태가 되고 전체 화면을 가득 채우기 때문에 Activity A가 onStop 메소드가 호출
'개발 > Android' 카테고리의 다른 글
| [Android] Intent(인텐트) 정리 (0) | 2025.02.12 |
|---|---|
| [Android] ViewModel 정리 (0) | 2025.02.11 |
| [Android] LiveData 정리 (0) | 2025.02.11 |
| [Android] 관찰자 패턴(Observer Pattern) (0) | 2025.02.11 |
| [Android] Fragment 정리 (0) | 2025.02.10 |