IT/Android

[Android] Activity LifeCycle(액티비티 생명주기) 가 뭐에요?

jaewon_sss 2024. 1. 23. 19:41
반응형

생명주기란?

사용자가 앱을 사용하다가, 앱에서 나가고, 앱으로 다시 돌아오면 액티비티 인스턴스는 수명주기 안에서 상태가 바뀐다.

 

Activity 클래스에서는 액티비티가 상태 변화를 알아차릴 수 있는 콜백을 제공한다.

즉, 안드로이드 앱이 실행된 후 다른 액티비티 화면으로 전환되거나, 화면이 꺼짐, 폰 상태바를 내려서 액티비티가 가려짐, 혹은 앱이 종료 될 때 등을 상태변화가 일어난다고 한다.

 

사용자가 액티비티를 벗어났다가 다시 돌아왔을 때 액티비티가 작동하는 방식을 생명주기 메서드에서 선언할 수 있다.
ex) 유튜브 시청 중 카톡이 와서 카톡 앱에 들어가면 동영상 일시중지-> 카톡 답장 후 유튜브 앱 돌아오면 다시 동영상 시작

 


생명 주기 콜백을 잘 구현하면 앱에서 아래 문제가 발생하지 않도록 예방할 수 있다.

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

 

 

 

안드로이드 Activity LifeCycle의 조직도

 

 

 

 

생명주기 메서드 종류

 

onCreate() 화면 생성 액티비티가 생성될 때 최초로 실행됨
onStart() 화면에 나타남 화면에 보여지기 시작
onResume() 현재 실행 중, 화면에 나타남 화면에 나타나 있고 실행 중
onPause() 화면이 가려짐 액티비티 "화면의 일부"가 다른 액티비티에 가려짐
onStop() 화면이 없어짐 다른 액티비티의 실행으로 완전히 가려짐
onDestroy() 종료됨 액티비티 종료됨

 

사용자가 액티비티를 벗어나기 시작하면 시스템은 액티비티를 해체하기위한 메서드를 호출한다. 이 때 액티비티는 여전히 메모리 안에 있으면서 백그라운드로 이동하며(사용자가 다른 앱으로 전환할 경우) 다시 포그라운드(Foreground)로 돌아올 수 있다.

사용자가 해당 액티비티로 다시 돌아오는 경우 종료한 지점에서 다시 액티비티가 시작된다. 몇가지 예외를 제외하고 앱은 백그라운드에서 실행될 때 액티비티를 실행 할 수 없다. 시스템은 그 시점의 액티비티 상태에 따라 특정 프로세스와 그 액티비티를 함께 종료할 지를 결정한다.

ex) 유튜브 시청 중 카톡이 와서 화면 상단 상태바를 내림. 내리면서 화면의 일부가 가려지고 있을 때 : onPause()

상태 바에 와있던 카톡 알림을 눌러 카카오톡 앱으로 이동. 기존 유튜브 앱은 화면에서 더이상 보이지 않음 : onStop()

곧 바로 앱으로 돌아온다면 재시작되어 onStart()

장시간 사용하지 않다가 앱을 실행시키면 이미 프로세스가 죽은 상태이므로 onCreate()

 

 

각 메소드의 구체적인 설명은 다음 포스팅에서 진행하겠습니다.

 

 

끗!

 

 

 

 

 

참조)

https://developer.android.com/guide/components/activities/activity-lifecycle

반응형