[안드로이드] Activity 생명주기

이상욱·2022년 12월 20일
0

안드로이드

목록 보기
4/17
post-thumbnail
post-custom-banner

Activity에서의 생명주기

사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환됩니다. Activity 클래스는 활동이 상태 변화(시스템이 활동을 생성, 중단 또는 다시 시작하거나, 활동이 있는 프로세스를 종료하는 등)를 알아차릴 수 있는 여러 콜백을 제공합니다.

수명주기 콜백을 잘 구현 하면 다음과 같은 문제를 예방할 수 있습니다.

  1. 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
  2. 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
  3. 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
  4. 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제

1. onCreate()

시스템이 먼저 Activity를 생성할 때 실행되는 것으로, 필수적으로 구현해야 합니다. onCreate() 메서드에서 Activity의 전체 생명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행합니다. 예를 들어 onCreate()를 구현하면 데이터를 목록에 바인딩하고, Activity를 ViewModel과 연결하고, 일부 클래스 범위 변수를 인스턴스화할 수도 있습니다. onCreate() 메서드가 실행을 완료하면 연달아 onStart()와 onResume() 메서드를 호출합니다

2. onStart()

onStart()가 호출되면 Activity가 사용자에게 표시되고, 앱은 Activity를 포그라운드에 보내 상호작용할 수 있도록 준비합니다. 예를 들어 이 메서드에서 앱이 UI를 관리하는 코드를 초기화합니다. 이 콜백이 완료되면 onResume() 메서드를 호출합니다.

3. onResume()

이 상태에 들어갔을 때 앱이 사용자와 상호작용합니다. 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무릅니다. 예를 들어 전화가 오거나, 사용자가 다른 활동으로 이동하거나, 기기 화면이 꺼지는 이벤트가 이에 해당합니다.

4. onPause()

시스템은 사용자가 Activity를 떠나는 것을 나타내는 첫 번째 신호로 이 메서드를 호출합니다. Activity가 포그라운드에 있지 않게 되었다는 것을 나타냅니다. 방해되는 이벤트가 발생하면 시스템이 onPause() 콜백을 호출합니다. onPause()에서 앱으로 돌아오면 다시 onResume()을 호출하므로 onPause() 중에 해체하는 구성요소를 초기화하고 필요한 다른 초기화 작업도 수행해야 합니다.
onPause -> onResume

5. onStop()

Activity가 사용자에게 더 이상 표시되지 않으면 시스템은 onStop() 콜백을 호출합니다. 예를 들어 새로 시작된 Activity가 화면 전체를 차지할 경우에 적용됩니다. 시스템은 Activity의 실행이 완료되어 종료될 시점에 onStop()을 호출할 수도 있습니다.
Activity는 onStop 상태에서 다시 시작되어 사용자와 상호작용하거나, 실행을 종료하고 사라집니다. 활동이 다시 시작되면 시스템은 onRestart()를 호출합니다.
onStop -> onRestart -> onStart -> onResume

6. onDestroy()

onDestroy()는 Activity가 소멸되기 전에 호출됩니다. 시스템은 다음 중 하나에 해당할 때 이 콜백을 호출합니다.

(사용자가 Activity를 완전히 닫거나 Activity에서 finish()가 호출되어) Activity가 종료되는 경우
구성 변경(예: 기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 Activity를 소멸시키는 경우

시작 : onCreate → onStart → onResume
화면 회전 : onPause → onStop → onDestory → onCreate → onStart → onResume
홈 버튼 클릭 : onPause → onStop
홈 클릭 후 다시 돌아올 때 : onRestart → onStart → onResume
백 버튼 클릭 : onPause → onStop → onDestory

레퍼런스
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko#tba

profile
항상 배우고 성장하는 안드로이드 개발자
post-custom-banner

0개의 댓글