예전에 플러터 앱을 공부할 때 생명주기에 대해 공부했었다.
하지만 안드로이드 앱은 개발을 계속하고 있지만 기본적인 생명주기에 대해 공부하지 않고
개발에만 몰두했었던것 같다.
추후 이 점이 문제가 되지않을까 싶어 공부을 해야겠다고 느꼈다.
앱의 생명주기
- Active (활성화된 상태): 앱이 현재 화면에 보이고 사용자와 상호작용할 수 있는 상태.
- Paused (일시정지된 상태): 앱이 화면에서 보이지 않지만, 여전히 메모리에 남아 있는 상태.
- 이 상태에서 앱은 사용자와 상호작용 불가능
- Stopped (중지된 상태): 앱이 완전히 화면에서 사라졌고, 메모리에도 없는 상태.
- 이 상태에서 앱은 사용자와 상호작용 불가능.
- Killed (종료된 상태): 시스템이 앱의 프로세스를 완전히 종료시킨 상태.
- 이 상태에서 앱은 메모리에 없으며, 다시 시작해야 사용자와 상호작용 가능.
* 앱의 생명주기는 사용자가 앱을 열고 닫을 때마다 변경될 수 있음.
액티비티의 생명주기
액티비티(Activity): 화면(UI)을 구성하고 사용자의 상호작용을 처리하는 컴포넌트
* 안드로이드 앱은 일반적으로 여러 개의 액티비티로 구성
* 액티비티는 화면의 일부분을 담당하고 사용자 입력에 대응
- 생성 상태 (Created): 액티비티가 생성되었지만, 아직 화면에 보이지 않는 상태.
- 이 상태에서는 onCreate() 메소드가 호출되어 액티비티가 초기화.
- 시작 상태 (Started): 액티비티가 화면에 보이지만, 아직 포그라운드에서 실행되고 있지 않은 상태.
- 이 상태에서는 onStart() 메소드가 호출되어 액티비티가 사용자에게 보여지기 시작함.
- 재개 상태 (Resumed): 액티비티가 포그라운드에서 실행되고 있으며, 사용자와 상호작용할 수 있는 상태.
- 이 상태에서는 onResume() 메소드가 호출되어 액티비티가 포그라운드에 진입함.
- 일시정지 상태 (Paused): 액티비티가 화면에서 보이지 않지만, 여전히 메모리에 남아있는 상태.
- 이 상태에서 액티비티는 사용자와 상호작용 불가능
- onPause() 메소드가 호출되어 액티비티가 포그라운드에서 벗어남.
- 정지 상태 (Stopped): 액티비티가 완전히 화면에서 사라졌지만, 여전히 메모리에 남아 있는 상태.
- 이 상태에서 액티비티는 사용자와 상호작용 불가능.
- onStop() 메소드가 호출되어 액티비티가 백그라운드로 이동함.
- 소멸 상태 (Destroyed): 액티비티가 메모리에서 완전히 제거되었으며, 사용자와 상호작용할 수 없는 상태.
- 이 상태에서는 onDestroy() 메소드가 호출되어 액티비티가 소멸됨.
* 액티비티는 위 같은 상태 변화에 따라 각각의 라이프 사이클 메소드가 호출됨.
프래그먼트 생명주기
프래그먼트(Fragment): 액티비티 내에서 사용되는 UI 구성 요소.
* 하나의 액티비티에서 여러 개의 프래그먼트를 사용하여 화면을 구성할 수 있음.
* 각 프래그먼트는 독립적으로 관리됨.
* 액티비티와 프래그먼트 간의 통신을 통해 데이터를 주고받을 수 있음.
- 생성 상태 (onAttach() -> onCreate()): 프래그먼트가 생성되었지만, 아직 액티비티에 붙지 않은 상태.
- 이 상태에서는 onAttach() 메소드가 호출되어 프래그먼트가 액티비티에 붙을 준비.
- onCreate() 메소드가 호출되어 프래그먼트가 초기화.
- 시작 상태 (onCreateView() -> onActivityCreated()): 프래그먼트가 화면에 보이지 않지만, 액티비티에 붙은 상태
- 이 상태에서는 onCreateView() 메소드가 호출되어 프래그먼트의 UI를 생성.
- onActivityCreated() 메소드가 호출되어 액티비티와의 상호작용을 준비.
- 재개 상태 (onStart() -> onResume()): 프래그먼트가 포그라운드에서 실행되고 있으며, 사용자와 상호작용할 수 있는 상태.
- 이 상태에서는 onStart() 메소드가 호출되어 프래그먼트가 사용자에게 보여짐.
- onResume() 메소드가 호출되어 프래그먼트가 포그라운드에 진입.
- 일시정지 상태 (onPause()): 프래그먼트가 화면에서 보이지 않지만, 여전히 메모리에 남아 있는 상태.
- 이 상태에서 프래그먼트는 사용자와 상호작용을 할 수 없음.
- onPause() 메소드가 호출되어 프래그먼트가 포그라운드에서 벗어남.
- 정지 상태 (onStop()): 프래그먼트가 완전히 화면에서 사라졌지만, 여전히 메모리에 남아 있는 상태.
- 이 상태에서 프래그먼트는 사용자와 상호작용을 할 수 없음.
- onStop() 메소드가 호출되어 프래그먼트가 백그라운드로 이동.
- 소멸 상태 (onDestroyView() -> onDetach()): 프래그먼트가 메모리에서 완전히 제거되었으며, 사용자와 상호작용할 수 없는 상태.
- 이 상태에서는 onDestroyView() 메소드가 호출되어 프래그먼트의 UI를 제거.
- onDetach() 메소드가 호출되어 프래그먼트가 액티비티에서 분리.
* 프래그먼트는 위 같은상태 변화에 따라, 각각의 라이프사이클 메소드가 호출됨.
댓글 영역