본문 바로가기
개인공부/android

Activity Lifecycle (생명주기)

by 왕큰새 2021. 12. 27.
728x90

Activity Lifecycle은 Activity가 생성되고 종료되기 까지의 상태(State)이다.

6개의 주요 Callback method를 제공해준다. Activity의 상태가 변경될 때마다 각각의 Callback method를 호출한다.

 

아래는 Activity Lifecyecle을 시각적으로 나타낸 것이다.

6개의 Callback method는 다음과 같다.

 

1. onCreate()

 

Activity의 상태가 Created(생성)될 때 호출

 

2. onStart()

 

Activity의 상태가 Started될 때 호출, 화면에 보이기 시작할 때를 의미

 

3. onResume()

 

Activity의 상태가 Resumed될 때 호출, 유저와 interation 할 수 있는 상태

 

4. onPause()

 

Activity의 상태가 Paused될 때 호출, 다른 Activity가 화면을 덮어서 보이지 않을 때,

유저와 interation 하기 어려운 상태이다. 

Paused 상태는 Resumed 상태로 다시 돌아갈 수 있는 상태이다.

Paused 상태에서 동작 하지 말아야 하는 것은 Callback method를 통해 제어, 자원을 해제할 수 있다.

 

onPause()를 사용하여 데이터를 저장하거나, 네트워크 호출,

데이터베이스 트랜잭션을 실행해서는 안된다.

메서드 실행이 끝나기 전에 완료되지 못할 수도 있다.

부하가 큰 종료 작업은 onStop() 상태일 때 실행해야 한다.

 

 

5. onStop()

 

Activity의 상태가 Stopped될 때 호출, Activity가 화면에 보이지 않는 상태이다.

Paused 상태와 다르게 Resumed 상태로 돌아갈 수 없지만, Started 상태로는 돌아갈 수 있다.

Callback method를 통해 자원을 해제할 수 있다.

Activity가 다시 시작되면, onRestart()를 호출하고, Activity를 종료하면 시스템은 onDestory()를 호출한다.

 

 

6. onDestory()

 

Activity가 소멸되기 전에 호출된다. 다음 중 하나에 해당할때 onDestroy()를 호출한다.

 

1. 사용자가 Activity를 완전히 닫거나 Acitivty에서 finish()가 호출되어 Activty가 종료되는 경우

 

2. 구성 변경( 기기 회전 또는 멀티 윈도우 모드 )로 인해 시스템이 일시적으로 Activity를 소멸시키는 경우

 

Activity A가 Activity B를 시작할 때 발생하는 작업 순서

1. Activity A의 onPause() 메서드가 실행된다.

 

2. Activity B의 onCreate(), onStart(), onResume() 메서드가 순차적으로 실행. 

   이때, 사용자 포커스는 Activity B에 있다.

 

3. Activity A가 더 이상 화면에 표시되지 않는 경우 onStop() 메서드가 실행된다.