본문 바로가기
개발/Android

[Android] Activity 정리

by 1인용 놀이터 2025. 2. 10.
728x90
반응형

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 메소드가 호출

728x90
반응형

'개발 > 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