Fragment 란?

Activity 개념과 View 개념이 합쳐진 것이라고 할 수 있습니다.

 

  • View : Activity 위에 놓이는 layout 이나 Button 같은 그림들
  • Activity : View 를 올릴 수 있는 도화지
  • Fragment : Activity 라는 도화지 위에 얹는 도화지 느낌

 

Fragment 를 왜 사용할까요?

Activity 를 변경하지 않고, Fragment 를 변경하는 것만으로도 Activity 위에 보이는 view 를 손쉽게 변경 가능합니다.

 

 

Fragment 주된 특징

  • Activity 를 분할하여 화면의 한 부분을 정의
  • 액티비티와 같이 레이아웃, 동작처리 ,생명주기를 가지는 독립적인 모듈
  • 다른 액티비티에서도 사용할 수 있어 재사용성이 뛰어남
  • 액티비티 내에서 실행 중 추가/제거가 가능합니다.
  • 프래그먼트는 필수적으로 하나의 액티비티에 종속되어야 합니다.

 

 

Fragment 생명주기

생명주기를 지키지 않는다면 메모리 누출 또는 비정상 종료가 발생할 수 있습니다.

  • onCreate()

프래그먼트를 생성할 때 호출됩니다.

프래그먼트가 일시정지 혹은 중단 후 재개되었을 때 유지하고 있어야하는 것을 여기서 초기화해야합니다.

프래그먼트를 생성하면서 넘겨준 값들이 있다면, 여기서 변수에 넣어주면 됩니다. 하지만 여기서는 UI 초기화는 못합니다.

 

  • onCreateView()

프래그먼트가 자신의 인터페이스를 처음 그리기 위해 호출합니다.

View 를 반환해야 합니다. 그래서 버튼이나 텍스트 뷰 등을 초기화 할 수 있습니다.

이 메서드는 프래그먼트의 레이아웃 루트이기 때문에 UI 를 제공하지 않는 경우 null 을 반환합니다.

 

  • onPause()

사용자가 프래그먼트를 떠나면 첫번째로 이 메서드를 호출합니다.

예를 들어, 홈 버튼을 눌러 화면에서 벗어나게 되면 이 메서드가 호출됩니다.

그래서 프래그먼트의 부모 액티비티가 아닌, 다른 액티비티가 foreground 로 나오게 되면, onPause 를 콜하고 backstack 으로 들어감

 

 

  • onStart()

액티비티가 시작됨 상태에 들어가면 이 메서드를 호출합니다.

사용자에게 프래그먼트가 보이게 되고, 이 메서드에서 UI 를 관리하는 코드를 초기화합니다.

이 메서드가 완료되면 Resumed 상태로 들어가 onResume() 을 호출합니다.

 

 

  • onResume()

이 상태에 들어갔을 때 사용자와 상호작용 합니다.

어떤 이벤트가 발생하여 포커스가 떠날 때까지 이 상태에 머무릅니다.

프로그램이 일시 정지되어 onPause() 를 호출하고 다시 재게되면 onResume() 메서드를 호출합니다.

즉, 유저에게 프래그먼트가 보여지고 상호작용 직전에 호출되는 함수입니다.

 

  • onStop()

다른 액티비티가 완전히 화면을 가리게 되면 호출합니다.

여기에 화면에 보이지 않을 때 실행할 필요가 없는 기능을 모두 정지할 수 있습니다.

유저가 다시 해당 액티비티를 호출하면 다시 복원할 수 있는 상태입니다.

+ Recent posts