day 2 : [Andorid] Activity LifeCycle

natuure·2021년 9월 16일
2

Study-Android

목록 보기
1/2

1. Activity LifeCycle이란?

활동 생명 주기로, 안드로이드의 생성부터 종료까지의 주기를 말한다. Activity가 새로운 상태에 들어가면 콜백을 호출하는 주기라고도 한다.

사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면 앱의 Activity 인스턴스는 생명주기 안에서 서로 다른 상태를 통해 전환된다.

  • Activity LifeCycle을 사용하는 이유
    ▫ 대표적으로 아래와 같은 문제를 예방하기 위해서 사용한다.
    - 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
    - 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
    - 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
    - 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제

❗ 활동 생명 주기를 적절히 활용하면 앱이 더욱 안정적으로 기능할 수 있다.
출처 : https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko#onstart

2. LifeCycle 메소드

생명주기는 단계 간의 전환을 위해 7개의 핵심 콜백을 제공한다.


2.1. onCreate()

  • 화면이 백그라운드 내에서 생성이 될 때 / 액티비티가 태어날 때
  • 가장 먼저 호출되고, 필수적인 메소드
  • 액티비티 또는 프래그먼트가 생성이 되었을 때 메소드 내부 구문들을 실행

2.2. onStart()

  • 화면이 보여지기 직전일 때
  • onCreate()가 호출된 다음 바로 onStart()가 호출됨

2.3. onResume()

  • 화면이 사용자에게 보여질 때
  • 중지된 액티비티가 다시 실행이 되는 시점에서 메소드 내부 구문들을 실행

2.4. onPause()

  • 기존 화면이 일부 보이지 않을 때
  • 화면이 일시정지 상태일 때 메소드 내부 구문들을 실행

2.5. onStop()

  • 기존 화면이 전부 보이지 않을 때
  • 화면이 일시정지 상태일 때 메소드 내부 구문들을 실행

2.6. onDestroy()

  • 화면이 파괴 및 소멸되었을 때
  • 화면이 소멸되었을 때 메소드 내부 구문들을 실행

2.7. onRestart()

  • 소멸되지 않고 백그라운드에 남아있는 상태의 화면을 다시 실행했을 때

3. LifeCycle 호출 과정

3.1. Activity 생성

  • 앱을 실행시키거나 에뮬레이터를 실행시켰을 때 아래와 같이 과정이 발생한다.


    1) onCreate() - onStart() - onResume() 순으로 호출되면서 사용자에게 메인화면 또는 MainActivity가 보여진다.

3.2. 새 Activity로 전환 (기존 액티비티 완전히 가려짐)

  • MainActivity에서 SubActivity로 전환되어 기존 액티비티가 완전히 보이지 않을 때 / MainActivity에서 홈 화면으로 이동했을 때 아래와 같은 과정이 발생한다.


    1) onCreate() - onStart() - onResume() 순으로 호출되면서 사용자에게 MainActivity가 보여진다.
    2) MainActivity에서 버튼을 눌러 SubActivity로 전환될 때 MainActivity가 가려지면서 onPause()가 호출된다.
    3) MainActivity가 완전히 가려지게 되면 onStop()이 호출되면서 SubActivity가 사용자에게 보여진다.

3.2.1. 이전 Activity로 전환

  • SubActivity에서 뒤로가기를 하여 다시 MainActivity로 전환할 때 / 홈 화면에서 백그라운드에서 아직 실행 중인 앱을 다시 실행했을 때 아래와 같은 과정이 발생한다.

    4) SubActivity에서 뒤로가기를 눌렀을 때 onRestart()가 호출되면서 이전 Activity를 재실행시킨다.
    5) onStart()가 호출되면서 MainActivity 실행을 시작한다.
    6) onResume()이 호출되면서 사용자에게 MainActivity 화면이 보여진다.

3.3. 새 Activity로 전환 (기존 액티비티 일부 가려짐)

  • MainActivity에서 SubActivity2로 전환되어 기존 액티비티의 일부가 보이지 않을 때 아래와 같은 과정이 발생한다.


    1) onPause()가 호출되면서 MainActivity가 SubActivity2에 의해 일부 가려져서 화면에 보여진다.

3.3.1 이전 Activity로 전환

  • SubActivity2에서 뒤로가기 버튼을 눌러서 다시 MainActivity 화면으로 전환될 때 아래와 같은 과정이 발생한다.

    2) 뒤로가기 버튼을 누르면 onResume()이 호출되면서 이전 Activity가 사용자에게 보여진다.

3.4. Activity 종료

  • Activity가 완전히 종료되었을 때 아래와 같은 과정이 발생한다.


    1) Activity가 완전히 종료될 때 onPause()와 onStop()이 호출되면서 화면이 홈화면으로 전환된다.
    2) onDestroy()가 호출되면서 Activity는 소멸(종료)된다.
profile
🌈 Mobile Application Developer

1개의 댓글

comment-user-thumbnail
2021년 9월 17일

이 글을 읽고 제 생명주기도 알게되었습니다

답글 달기