-
[Android Studio] 액티비티의 활동 수명 주기(Activity LifeCycle) 알아보기 - onCreate(), onStart() 등개발 끄적끄적/Android 2020. 10. 6. 00:57반응형
안드로이드 기기의 화면에 보여지는 버튼, 이미지, 텍스트 등을 UI라고 부릅니다.
이때, UI와 밀접한 관련을 가지고 있는 액티비티의 생명 주기(Activity LifeCycle)에 대해 포스팅하겠습니다.
액티비티(Activity)란?
사용자에게 UI가 있는 화면을 제공하는 앱 컴포넌트입니다. 즉, 글을 읽는 화면, 지도 보기 화면, 카메라 촬영 화면 등 사용자와 상호작용을 할 수 있는 화면을 제공하는 것입니다.
앱은 보통 여러 개의 액티비티로 이루어져 있으며 각 액티비티는 화면을 꽉 채우기도 하고, 다른 윈도우 위에 떠 있을 수도 있습니다. 이때 하나의 액티비티(화면)에서 다른 액티비티(화면)로 이동하면 이전의 액티비티는 정지되며, 시스템의 백스텍이란 곳에 저장됩니다. 사용자가 뒤로가기 버튼을 누르면 이전의 액티비티가 그대로 남아 있는 것이 이 원리입니다.
여러 개의 액티비티가 모여 앱을 이루는 만큼 액티비티는 앱에 있어서 중요한 요소입니다. 앱의 화면 전환 시 각 액티비티가 생성되고 정지, 종료되는 상태를 액티비티 활동 수명 주기(Activity LifeCycle)라고 부릅니다.
액티비티 생명 주기 (Activity LifeCycle)을 알아야 하는 이유
안드로이드를 처음 공부하면 Activity를 생성하고, 다른 Activity를 연결하는 일부터 하기 마련입니다. 간단한 화면을 구현하고 이동하는 작업 뿐이라면 이런 LifeCycle은 몰라도 괜찮습니다.
하지만 사용자가 앱을 사용하는 도중 전화가 걸려오거나 다른 앱으로 전환할 때 등 비정상적인 종료가 일어났을 때 Activity의 생명 주기를 알고 있다면 데이터가 날아가는 등의 문제를 방지할 수 있을 것입니다.
액티비티 생명 주기 (Activity LifeCycle)
아래 그림은 안드로이드 공식 문서에 첨부되어있는 LifeCycle 도식입니다.
Activity LifeCycle의 각 단계를 앱 실행 순서대로 짚어보겠습니다.
1. onCreate()
onCreate()는 Activity가 최초로 생성될 때 호출됩니다. 즉, 앱의 세팅을 하는 등 초기화 설정을 하는 곳입니다.
위와 같은 형태로 코딩을 하며 가장 자주 접하게 될 상태입니다.
savedInstanceState라는 매개 변수를 포함하는데 이 매개 변수는 Activity가 종료될 때 데이터를 저장하는 기능을 합니다. 자세한 내용 및 사용 방법은 다음 번에 포스팅하겠습니다.
2. onStart()
onStart()는 Activity가 사용자에게 보여지기 직전에 호출됩니다. 또한, Activity가 정지된 상태에서 다시 전면으로 돌아올 때 호출됩니다.
이 곳에선 Activity가 비정상적으로 종료되었을 경우를 대비해 리소스를 확인, 재할당 등의 작업을 하는 것이 좋습니다.
3. onResume()
이는 Activity가 사용자와 상호작용을 하기 직전에 호출됩니다.
Activity의 실행 직전에는 반드시 onResume()을 지납니다.
4. onPause()
다른 Activity가 활성화될 때 호출됩니다. onPause()가 호출된 후 다시 기존의 Activity가 활성화되면 onResume()을 실행하며 Activity를 활성화합니다.
단, 다른 Activity가 기존의 Activity를 전부 가리지 않는 상황에서 onPause()가 실행됩니다. 기존의 Activity를 전부 가린다면 onPause()가 아닌 onStop()을 호출합니다.
5. onStop()
다른 Activity가 기존의 Activity를 완전히 가리며 활성화될 때 호출됩니다. 기존의 Activity가 다시 실행되면 onRestart()를 호출하며 onStart() - onResume()의 순서를 거쳐 활성화됩니다.
더보기onPause()와 onStop()의 차이점
즉, 다른 Activity가 기존 Activity를 전부 가리느냐에 따라 onPause(), onStop() 호출 여부가 결정됩니다.
예시로 사용자가 앱을 사용하다 알람이 울리거나 전화가 와서 팝업이 뜨는 경우엔 onPause(), 그 외에 Activity가 완전히 화면을 벗어날 경우엔 onStop()이 되는 것입니다.
6. onRestart()
위의 onStop() 으로 Activity가 정지된 후에 다시 시작할 때 호출됩니다. onStart() - onResume()의 순서를 거쳐 Activity가 활성화됩니다.
더보기onRestart()와 onResume()의 차이점
onRestart()는 Activity가 onStop()이 호출된 후 다시 시작하기 전에 호출되며, onResume()은 항상 호출됩니다.
즉, onStop()이 불렸을 경우 onRestart()와 onResume()은 모두 호출되며,
onPause()이 불렸을 경우엔 onResume()만 불리는 것입니다.
7. onDestroy()
onDestroy()는 Activity가 삭제되기 직전에 호출됩니다.
더이상 사용되지 않을 리소스 등은 이 단계에서 해제하면 됩니다.
Activity의 LifeCycle을 잘 알고 개발하는 것과 모르고 개발하는 것은 앱의 성능, 속도, 리소스 관리 등의 측면에서 많은 차이가 있을 것입니다.
앱의 많은 부분을 차지하는 중요한 요소인만큼 정확한 개념을 숙지해두는 것이 많은 도움이 될 것이라 생각합니다.
반응형'개발 끄적끄적 > Android' 카테고리의 다른 글
[Android Studio] 코틀린의 정적 변수 개념 알아보기 - const, companion object (0) 2020.10.07 [Android Studio] Kotlin의 람다 표현식, Member Reference을 이용해 코드의 가독성을 높혀보자 (0) 2020.09.28 [Android Studio] Kotlin 변수와 데이터 타입 알아보기 (0) 2020.09.25 [Android Studio] 안드로이드 개발 환경 구축하기 - Android Studio 사용방법 및 구조 이해하기 (0) 2020.09.22 [Android Studio] 안드로이드 개발 환경 구축하기 - Android Studio 설치 (0) 2020.09.18