[Android] Fragment 생명주기

Jinny·2021년 2월 27일
0

Android

목록 보기
12/32
post-thumbnail

🚩 Fragment란?

안드로이드에서 화면(UI) 구성의 가장 기본 요소는 Activity이다. 앱에서 위젯(Button, ImageView)을 표시하기 위해서는 최소한 한개 이상의 Activity를 가져야 한다.

◾ Fragment의 등장!

: 안드로이드 초기 시절, 작은 화면의 디바이스만 있을 당시에는 Activity 단위로만 UI를 구성해도 큰 번거로움은 없었다.
하지만 태블릿 같은 큰 화면을 가진 디바이스가 나오면서 많은 위젯들을 사용되어 지게 되었고, Activity 단위로만 구성하기 에는 큰 번거로움이 있었다.

이를 해결하기 위해 안드로이드 허니컴(3.0, API LEVEL 11)부터 'Fragment'가 도입 되었다. 위와 같이 다양한 화면 크기에 반응하는 앱을 예시로 보면 UI 모양을 더 쉽게 수정할 수 있음을 알 수 있다.

◾ Fragment의 특징

  1. Activity 내에 생성되며, UI 구성을 여러개의 모듈 단위로 작성할 수 있게 도와줌
  2. 여러 Activity에서 재사용이 가능한 점이 큰 장점
  3. 자체 레이아웃을 정의 및 관리하고, 자체 생명주기(Life Cycle)를 가지며, 자체 입력 이벤트를 처리 할 수 있음
  4. 자체적으로 존재할 수는 없으며 Activity 또는 다른 Fragment에 의해 호스팅 되어야 한다 .

🚩 Fragment의 생명주기

Activity 클래스는 6가지 콜백으로 구성된 핵심 집합의 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()를 제공한다.
Activity가 새로운 상태에 들어가면 시스템은 각 콜백을 호출한다.


맨위 부터 하나씩 살펴보자!

◾ 1. Activity State : Created (액티비티 생성 시)

  • onAttach() : Fragment가 Activity에 '붙을 때' 호출된다.
    자원을 가져다 쓸때 onAttach()를 오버라이드하여 사용한다.
//Fragment에서 부모 액티비티 저장하는 법
public void onAttach(Context context){
   super.onAttach(context)
   if(context instanceof MainActivity){
      mParent = (MainActivity)context;
   }
}
  • onCreate() : 이 Fragment가 사용할 리소스를 초기화 한다. (UI초기화는 아님!)

  • onCreateView(): Layout inflate와 UI를 초기화 한다.
    ( inflater -> 뷰를 그려주는 역할/ container -> 부모 뷰 )
    Fragment가 인터페이스를 처음으로 그릴 때 호출된다.
    부모 액티비티의 onCreate()를 호출 후 실행된다.
    이때, 부모 액티비티의 onCreate()가 아직 끝나지 않았으니 View를 바꾸면 안된다.

  • onActivityCreated() : 부모 액티비티의 onCreate() 종료 후 실행된다.
    Frag,Activity 모두 View 생성이 완료된 상태이니 부모 액티비티의 View를 바꾸려면 여기서 바꾸면 된다.

    위 onCreate()와 onCreateView(), onActivityCreated()는 최소한으로 구현해야 하는 3개의 생명 주기 메서드다.

◾ 2. Activity State : Started (액티비티 생성 시)

  • onStart() : Fragment가 화면에 표시될 때 호출된다.

◾ 3. Activity State : Resumed (액티비티 재개 시)

  • onResume() : Fragment가 로딩이 끝나 화면에 완전히 보였을 때 호출된다.

◾ 4. Activity State : Paused (액티비티 일시중지 시)

  • onPause() : 화면이 중지되면 호출된다.

◾ 5. Activity State : Stopped (액티비티 중지 시)

  • onStop() : Fragment가 종료되는 과정에서 호출된다.

◾ 6. Activity State : Destroyed (액티비티 파괴 시)

Fragment를 삭제하는 경우 실행되는 함수이다.

  • onDestroyView() : Fragment가 있던 자리에 다른 Fragment가 대체될 때 실행된다. Fragment의 View를 제거한다.

  • onDestroy() : 리소스를 제거한다.
    어플이 종료되거나, 절전모드 등으로 화면이 꺼지거나, 다른 어플을 실행하는 등 '사용
    자가 얘를 버린것같아!' 싶을 때 실행된다.

  • onDetach() : 액티비티로 부터 분리될 때 실행된다.

Fragmaent는 리소스를 먼저 만들고 뷰를 만든다.
또, 뷰를 제거하고 나서 리소스 제거한다.


출처 : 안드로이드 공식 문서 - Fragments && 이미지 출처
profile
신입 개발자👩‍💻

0개의 댓글