Q8) Activity 생명주기
Activity 생명주기
안드로이드 Activity 생명주기는 Activity가 생성되어 소멸되기까지, 그 과정에서 거치는 여러 가지 상태를 설명한다. 이 상태들을 이해하는 것은 리소스를 효율적으로 관리하고, 사용자 입력을 처리하며, 부드러운 사용자 경험을 보장하는 데 매우 중요하다.

onCreate()
: 액티비티가 처음 생성될 때 딱 한 번 호출되는 메서드이다. 이곳에서 ui 컴포넌트 초기화(예:setContentView()
), 데이터 로딩 등 가장 기본적인 설정 작업을 한다.onStart()
: 액티비티가 사용자에게 보이기 시작하는 단계이다. 아직 사용자가 화면을 터치하는 등 상호작용은 할 수 없다.onRestart()
:onStop()
상태에 있던 액티비티가 다시 화면에 나타나기 전에 호출된다. (예: 홈 화면에 나갔다가 다시 앱 아이콘을 눌러 들어왔을 때)onResume()
: 액티비티가 화면의 가장 앞에 나타나 사용자와 상호작용이 가능한 상태이다. 애니메이션 시작, 카메라 미리보기 실행 등 화면이 활성화되었을 때 필요한 기능들을 이곳에서 시작한다.onPause()
: 액티비티가 부분적으로 다른 뷰의 의해 가려졌을 때 호출된다. (예: 투명한 다이얼로그 창이 떴을 때) 액티비티는 여전히 보이지만, 사용자와의 상호작용은 멈춘 상태이다. 이곳에서 비디오 재생이나 애니메이션 같은 지속적인 작업을 일시적으로 멈추는 것이 좋다.onStop()
: 액티비티가 사용자에게 완전히 보이지 않게 되었을 때 호출된다. (예: 다른 액티비티가 화면 전체를 덮거나, 홈 버튼을 눌러 앱을 나갔을 떄) 화면이 보이지 않을 때 필요 없는 리소스를 해제하는 작업을 한다.onDestroy()
: 액티비티가 메모리에서 완전히 제거되기 직전에 호출된다. 뒤로가기 버튼을 눌러 액티비티를 종료하거나, 시스템이 메모리를 확보하기 위해 액티비티를 강제로 종료할 때 호출된다. 이곳에서 남아있는 모든 리소스를 최종적으로 정리한다.
요약
액티비티는 사용자의 상호작용과 안드로이드 시스템의 앱 리소스 관리 방식에 따라 이러한 메서드들을 거치게 된다. 개발자들은 이 콜백(callback)들을 사용하여 상태 전환을 관리하고, 리소스를 절약하며, 사용자에게 부드러운 경험을 제공한다.
A)
가장 큰 차이점은 액티비티의 가시성(visibility)
onPause()
: 부분적으로 보임onStop()
: 완전히 보이지 않음
onPause()
는 다음 화면으로 넘어가는 징검다리 역할이므로, 여기서 무거운 작업을 하면 앱 전환이 느려지고 사용자 경험이 크게 저하된다. 따라서 아주 가볍고 빠른 작업만 처리해야한다. 리소스를 많이 사용하는 무거운 작업을 하기엔 적합하지 않다.
적합한 작업
애니메이션, 비디오 재생 등 UI 관련 동작 일시정지
GPS, 자이로스코프 등 센서 리스너 등록 해제
카메라 미리보기 중단
onStop()
은 사용자가 앱을 더 이상 보고 있지 않은 상태이므로, 상대적으로 시간이 더 걸리는 정리 작업을 수행하기에 적합하다.
적합한 작업
사용자가 입력한 내용 등 복잡한 데이터를 DB나 파일에 저장
더 이상 필요 없는 네트워크 연결 해제
메모리를 많이 차지하는 무거운 리소스(비트맵, 오디오 등)해제