IOS를 사랑하는 AOS 개발자
[Android] Activity 생명주기 본문
👼🏻 초보 안드로이드 개발자가 매번 구글링하기 싫어서 정리하는 블로그 👼🏻
4대 컴퍼넌트에 속하는 Activity 의 생명주기에 관해 정리합니다!!
✅ Activity LifeCycle
✔️ Activity 가 시작되고 종료되는 시점까지의 상태를 Activity LifeCycle 이라고 합니다.
✔️ 순서는 onCreate() ▶️ onStart() ▶️ onResume() ▶️ onPause() ▶️ onStop() ▶️ onDestroy()
onRestart() 가 실행 될 수 있습니다.
📌 onCreate() - Activity LifeCycle 동안 "한 번" 만 실행한다.
🔗 이 메서드에서는 UI 구성, XML, 변수 정의 등 설정을 하며, 필수적으로 구현되어야 한다.
📌 onStart() - 호출되면 포그라운드에 보내 상호작용을 할 수 있도록 준비한다.
🔗 이 메서드는 매우 빠르게 완료되고 바로 onResume 을 호출하며 UI를 관리하는 코드를 초기화 한다. 활성상태에 들어가면 이 함수가 호출되며 사용자에게 보여지기 직전을 의미한다.
📌 onStart() - 특별한 이벤트가 발생되지 않고 앱에서 포커스가 떠날 때까지 이 메서드에 머무른다.
🔗 특별한 이벤트가 발생되면 일시중지 상태에 들어가고 onPause() 를 호출한다.
(ex : 전화가 오거나, 화면일부가 가려지거나, 사용자가 다른화면으로 이동하거나, 기기 화면이 off 될 때)
🔗 사용자에게 화면을 보여지고 상호작용을 하는 메서드이다.
📌 onPause() - 포그라운드에 있지 않을 때 실행할 필요가 없는 기능을 모두 정지할 수 있다.
🔗 이 메서드는 onStart() 처럼 잠깐, 빠르게 실행됨으로 저장 작업을 하기에는 부적합할 수 있다.
(ex : 데이터를 저장하거나, 네트워크를 호출하거나, DB트랜잭션 등 실행하기엔 부적합)
🔗 무거운 작업은 onStop() 에서 처리하는 것이 효율적이다.
🔗 사용자가 화면을 떠날 때 제일먼저 호출하는 메서드이다. (상태가 포그라운드에 있지 않게 되었다는 것을 나타냄)
📌 onStop() - 앱이 사용자에게 보이지 않는 동안 앱이 필요하지 않는 리소스를 해제하거나 조정해야 한다.
🔗 onPause() 에서 하지 못하는 무거운 작업을 여기서 처리 할 수 있다.
(ex : DB 저장 같은 것. 하지만 메모리가 부족할 경우 호출이 안될 수도 있음)
🔗 포커스가 완전히 빠졌을 때 시스템은 이 메서드를 호출한다.
📌 onDestroy() - 앱이 완전히 종료되는 경우
구성변경 ( 기기 회전 또는 멀티 윈도우모드 ) 으로 시스템이 일시적으로 활동을 소멸시키는 경우
🔗 onStop()에서 해제하지 않은 모든 리소스를 해제해야 한다.
📌 onRestart() - onCreate() 를 뛰어넘고 바로 onStart()로 가는 메소드
🔗 onStop()상태에 있던 화면이 다시 켜졌을 때 호출되는 메소드
✅ 액티비티에서 액티비티로 이동할 때 LifeCycle 순서
🖋 예제 코드 곧 올릴게요....
☑️ 액티비티에서 문자가 왔을 경우( 화면이 일부 가려졌을 때 )
onCreate() ▶️ ... ▶️ onResume() ▶️ 문자 옴 ▶️ onPause() ▶️ 문자 사라짐 ▶️ onResume()
☑️ AA 액티비티에서 BB 액티비티로 이동
AA onCreate() ▶️ ... ▶️ AA onResume() ▶️ BB 액티비티 이동 클릭 ▶️ AA onPause() ▶️ BB onCreate() ▶️ ... ▶️ BB onResume() ▶️ AA onStop() ▶️ AA onDestroy() ( 상황에 따라 다를 수 있어요 )
( 액티비티는 종이처럼 겹겹이 쌓이는 것(?) 이라 AA 가 BB보다 밑에 깔려있다면 BB 를 치우고 다시 AA 를 볼 수 있어요 )
☑️ 액티비티에서 백그라운드로 갔다 다시 포그라운드로 복귀 시
onCreate() ▶️ ... ▶️ onResume() ▶️ 홈버튼(백그라운드) ▶️ onPause() ▶️ onStop() ▶️ 앱 복귀 ▶️ onRestart() ▶️ onStart() ▶️ onResume()
생명주기만 알아도 실제 개발할 때 도움이 많더라구요
꼭 잊지않고 활용해야겠습니다요!
🔆 막무가내 기술 블로그 / Android Interview 에서 참고하여 작성했습니다.
원본 : https://www.notion.so/imwj/Android-Interview-3ce7ddf12ddb413a9d2213173654d52c
'Android (이론)' 카테고리의 다른 글
[Android] ANR 이란? (0) | 2023.09.10 |
---|---|
[ Kotlin ] Kotlin 과 Java 차이점 1 - 변수와 자료형 (0) | 2022.01.18 |
[Android] 안드로이드 Intent란? (0) | 2022.01.04 |
[Android] Activity와 Fragment의 차이점 (0) | 2021.12.17 |
[Android] 안드로이드 4대 컴포넌트 (0) | 2021.12.17 |