상세 컨텐츠

본문 제목

안드로이드 앱, 액티비티, 프래그먼트 생명주기 공부

공부/안드로이드

by dofury 2023. 3. 18. 12:38

본문

728x90

예전에 플러터 앱을 공부할 때 생명주기에 대해 공부했었다.

하지만 안드로이드 앱은 개발을 계속하고 있지만 기본적인 생명주기에 대해 공부하지 않고

개발에만 몰두했었던것 같다. 

 

추후 이 점이 문제가 되지않을까 싶어 공부을 해야겠다고 느꼈다.


앱의 생명주기

  1. Active (활성화된 상태): 앱이 현재 화면에 보이고 사용자와 상호작용할 수 있는 상태.
  2. Paused (일시정지된 상태): 앱이 화면에서 보이지 않지만, 여전히 메모리에 남아 있는 상태.
    1. 이 상태에서 앱은 사용자와 상호작용 불가능
  3. Stopped (중지된 상태): 앱이 완전히 화면에서 사라졌고, 메모리에도 없는 상태.
    1. 이 상태에서 앱은 사용자와 상호작용 불가능.
  4. Killed (종료된 상태): 시스템이 앱의 프로세스를 완전히 종료시킨 상태.
    1. 이 상태에서 앱은 메모리에 없으며, 다시 시작해야 사용자와 상호작용 가능.

* 앱의 생명주기는 사용자가 앱을 열고 닫을 때마다 변경될 수 있음.

 


액티비티의 생명주기

액티비티(Activity):  화면(UI)을 구성하고 사용자의 상호작용을 처리하는 컴포넌트

 

* 안드로이드 앱은 일반적으로 여러 개의 액티비티로 구성

* 액티비티는 화면의 일부분을 담당하고 사용자 입력에 대응

 

  1. 생성 상태 (Created): 액티비티가 생성되었지만, 아직 화면에 보이지 않는 상태.
    1. 이 상태에서는 onCreate() 메소드가 호출되어 액티비티가 초기화.
  2. 시작 상태 (Started): 액티비티가 화면에 보이지만, 아직 포그라운드에서 실행되고 있지 않은 상태.
    1. 이 상태에서는 onStart() 메소드가 호출되어 액티비티가 사용자에게 보여지기 시작함.
  3. 재개 상태 (Resumed): 액티비티가 포그라운드에서 실행되고 있으며, 사용자와 상호작용할 수 있는 상태.
    1. 이 상태에서는 onResume() 메소드가 호출되어 액티비티가 포그라운드에 진입함.
  4. 일시정지 상태 (Paused): 액티비티가 화면에서 보이지 않지만, 여전히 메모리에 남아있는 상태.
    1. 이 상태에서 액티비티는 사용자와 상호작용 불가능
    2. onPause() 메소드가 호출되어 액티비티가 포그라운드에서 벗어남.
  5. 정지 상태 (Stopped): 액티비티가 완전히 화면에서 사라졌지만, 여전히 메모리에 남아 있는 상태.
    1. 이 상태에서 액티비티는 사용자와 상호작용 불가능.
    2. onStop() 메소드가 호출되어 액티비티가 백그라운드로 이동함.
  6. 소멸 상태 (Destroyed): 액티비티가 메모리에서 완전히 제거되었으며, 사용자와 상호작용할 수 없는 상태.
    1. 이 상태에서는 onDestroy() 메소드가 호출되어 액티비티가 소멸됨.

* 액티비티는 위 같은 상태 변화에 따라 각각의 라이프 사이클 메소드가 호출됨.


프래그먼트 생명주기

프래그먼트(Fragment): 액티비티 내에서 사용되는 UI 구성 요소.

 

* 하나의 액티비티에서 여러 개의 프래그먼트를 사용하여 화면을 구성할 수 있음.

* 각 프래그먼트는 독립적으로 관리됨.

* 액티비티와 프래그먼트 간의 통신을 통해 데이터를 주고받을 수 있음.

 

  1. 생성 상태 (onAttach() -> onCreate()): 프래그먼트가 생성되었지만, 아직 액티비티에 붙지 않은 상태.
    1. 이 상태에서는 onAttach() 메소드가 호출되어 프래그먼트가 액티비티에 붙을 준비.
    2. onCreate() 메소드가 호출되어 프래그먼트가 초기화.
  2. 시작 상태 (onCreateView() -> onActivityCreated()): 프래그먼트가 화면에 보이지 않지만, 액티비티에 붙은 상태
    1. 이 상태에서는 onCreateView() 메소드가 호출되어 프래그먼트의 UI를 생성.
    2. onActivityCreated() 메소드가 호출되어 액티비티와의 상호작용을 준비.
  3. 재개 상태 (onStart() -> onResume()): 프래그먼트가 포그라운드에서 실행되고 있으며, 사용자와 상호작용할 수 있는 상태.
    1. 이 상태에서는 onStart() 메소드가 호출되어 프래그먼트가 사용자에게 보여짐.
    2. onResume() 메소드가 호출되어 프래그먼트가 포그라운드에 진입.
  4. 일시정지 상태 (onPause()): 프래그먼트가 화면에서 보이지 않지만, 여전히 메모리에 남아 있는 상태.
    1. 이 상태에서 프래그먼트는 사용자와 상호작용을 할 수 없음.
    2. onPause() 메소드가 호출되어 프래그먼트가 포그라운드에서 벗어남.
  5. 정지 상태 (onStop()): 프래그먼트가 완전히 화면에서 사라졌지만, 여전히 메모리에 남아 있는 상태.
    1. 이 상태에서 프래그먼트는 사용자와 상호작용을 할 수 없음.
    2. onStop() 메소드가 호출되어 프래그먼트가 백그라운드로 이동.
  6. 소멸 상태 (onDestroyView() -> onDetach()): 프래그먼트가 메모리에서 완전히 제거되었으며, 사용자와 상호작용할 수 없는 상태.
    1. 이 상태에서는 onDestroyView() 메소드가 호출되어 프래그먼트의 UI를 제거.
    2. onDetach() 메소드가 호출되어 프래그먼트가 액티비티에서 분리.

* 프래그먼트는 위 같은상태 변화에 따라, 각각의 라이프사이클 메소드가 호출됨.

 

728x90

관련글 더보기

댓글 영역