액티비티 생명주기(LifeCycle) 호출순서
두 액티비티 간 이동 시 LifeCycle 호출순서
다이얼로그 / 화면 일부 이동시 LifeCycle 호출순서
다이얼로그 / 화면 일부 이동시 LifeCycle 호출순서
액티비티 (Activity)
- 액티비티(Activity)는 안드로이드 4대 컴포넌트 중 하나
- UI (사용자 인터페이스)와 가장 밀접한 관련을 갖고 있기 때문에 가장 기본이 되는 구성요소
- 보통 App은 필수로 하나 이상의 Activity가 서로 연결된 형태로 구성
- 액티비티(Activity)는 크게 3가지의 상태가 존재
- 실행 : 화면(UI) 상에 액티비티가 보여지고 있는 상태
- 일시정지 : 액티비티가 일부분 보이긴 하지만 다른 액티비티가 포커스를 가져간 상태
- 중지 : 다른 액티비티에 의해서 전부 가려진 상태 (보이지 않는 상태)
스택 (Stack)
- 액티비티 관리방법으로, 스택은 데이터가 메모리에 쌓이는 구조로 표현
- LIFO (Last In First Out)
- 후입선출 구조 : 가장 나중에 들어온 자료가 가장 먼저 나가는 방식
생명주기 (LifeCycle)
- 생명주기 ?
- Activity는 생성 후 메모리에 들어가서 소멸될 때 까지 '생명주기'를 갖고 있습니다
- 생명주기는 7가지로 구분됩니다
- onCreate()
처음 액티비티가 생성될 때 호출
이곳에서 일반적인 정적 설정을 모두 수행해야 합니다 (View 생성, DataBinding 등)
레이아웃 연결을 위한 setContentView() 메서드도 이 부분에서 실행 - onStart()
onCreate() 이후 화면에 보이기(시작되기) 직전에 호출 - onResume()
onStart() 이후 호출되며, 사용자와 상호작용하기 직전에 호출됩니다
onPause에서 sharedpreferences에 임시저장한 데이터를 불러오는데 주로 사용하는 부분 - onPause()
화면에서 액티비티가 일부분 가려질 때 호출 (팝업 알람, 다이얼로그 등)
다른 액티비티로 완전 전환할 경우 호출되는 중지상태의 생명주기 중 첫번째 호출 - onStop()
액티비티가 더 이상 사용자에게 보이지 않을 때 호출 (완전히 가려진 경우)
다른 액티비티로 전환 시 스택 최상단에 다른 액티비티가 쌓여 가려지게 되면서 호출
onStop 상태에서 back키로 이전 액티비티로 돌아가는 경우 onRestart를 호출 - onDestroy()
액티비티가 소멸되기 전에 호출로, 액티비티가 받는 마지막 호출입니다
액티비티의 finish() 호출 또는 시스템에 의해 메모리 부족으로 소멸시킬 경우 - onRestart()
액티비티가 중단되었다가 다시 시작되기 직전에 호출
onRestart 호출 뒤에는 무조건 onStart()가 호출
- onCreate()
LifeCycle 호출 순서
- 생명주기를 어느정도 생각해보니 쉬운것 같이 느껴지고, 대충 알겠다 싶었다
기존 onCreate - onStart - onResume - onPause - onStop
서브 - onCreate - onStart - onResume - 위 처럼 새로운 액티비티를 호출하면 순서대로 호출될 거라 생각했지만,
- 실제로 작동을 해보니 서브 액티비티의 onCreate() 이전에 기존의 onPause()가 먼저 호출된다