코린이 탈출기

Acticity LifeCycle (액티비티 생명주기) 본문

안드로이드 면접 질문/안드로이드 예상 질문

Acticity LifeCycle (액티비티 생명주기)

50HEE 2022. 1. 11. 16:03

신입 면접 질문에서 기본 중 기본으로 면접 본 회사들은 다 물어본 질문입니다!

 

Activity LifeCycle

 

onCreate - 앱이 시작될 때 최초 한 번 호출됩니다. 즉, 활동이 생성되면 생성됨 상태가 됩니다. 이 상태에서 머무르지 않고 다음 상태인 onStart로 넘어갑니다.

onStart - 활동이 시작됨 상태에 들어가면 호출됩니다. 사용자에게 표시되고, 상호작용 할 수 있도록 준비합니다. 즉, 사용자에게는 보이지만 사용자와 상호작용은 할 수 없는 상태입니다. 이 상태에서 머무르지 않고 다음 상태인 onResume으로 넘어갑니다.

onResume - 활동이 재개됨 상태에 들어가면 호출됩니다. 이 상태가 되어야 사용자와 상호작용합니다. 어떤 이벤트나 앱에서 포커스가 떠날 때까지 앱은 이 상태에서 머무릅니다. 앞에서 설명한 이벤트나 포커스가 떠났을 경우, 멀티 윈도우가 되었을 경우에는 다음 상태인 onPuase로 넘어갑니다.

onPuase - 사용자가 활동을 떠나는 것을 나타내는 첫 번째 신호로 일시중지 상태가 됩니다. 활동이 포그라운드에 있지 않게 되었음을 의미하는 것으로 앱이 소멸된 것은 아닙니다. 즉, 다른 이벤트나 포커스나 떠났을 경우 화면이 안 보이는 경우도 있으나, 멀티 윈도우의 경우에는 화면이 보입니다. 이 상태에서 화면이 다시 넘어가면 onResume, 화면이 보이지 않을 경우에는 onStop으로 넘어갑니다.

onStop - 활동이 사용자에게 더 이상 표시되지 않으며 중단됨 상태에 들어가면 호출됩니다. 기존 앱에서 새로운 화면으로 넘어갔을 경우에 해당합니다. 만약 새로운 화면에서 기존 화면으로 넘어왔을 경우에는 onRestart -> onStart -> onResume으로 호출합니다. 하지만 화면을 중단하고 앱을 종료할 경우에는 onDestroy를 호출합니다.

onDestroy - 활동이 소멸되기 전에 호출합니다. 즉, 해당 어플을 종료할 경우를 의미합니다. 활동이 종료되는 경우에 호출되므로 마지막 수명 주기가 됩니다.

onRestart - 활동이 재기될 때 호출됩니다. 화면이 일시중지(onPuase) 상태가 아닌 중단됨(onStop) 상태일 경우에서 다시 활동을 시작하기 위해 호출됩니다. 이후 onStart -> onResume으로 다시 기존의 생명주기를 거치게 됩니다.

 

 

 

예시를 들며 순서를 정리하겠습니다.

기존 순서

onCreate -> onStart -> onResume -> 화면 종료 -> onPuase -> onStop -> onDestroy

중간에 화면을 다른 곳으로 넘길 경우 (멀티 윈도우 등)

onCreate -> onStart -> onResume -> 다른 화면 등장 -> onPuase -> 다시 기존 화면으로 넘어가기 -> onResume -> onPuase ->onStop -> onDestroy

중간에 다른 앱으로 넘어갈 경우 (홈 버튼 누른 경우 등)

onCreate -> onStart -> onResume -> 다른 화면 등장 -> onPuase -> 다른 앱으로 이동 / 홈 버튼 누름 -> onStop -> 다시 기존 앱으로 넘어가기 -> onRestart -> onResume -> onPuase -> onStop -> onDestroy

 

 

 

공식 문서를 토대로 작성하였습니다.

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko 

 

활동 수명 주기에 관한 이해  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

 

자세한 설명은 아래의 글을 통해 알아보시기 바랍니다.

2021.06.01 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 9.5 - 안드로이드 액티비티의 생명주기 개념 이해

Comments