

👀 생명주기
- 시스템에서 클래스 객체의 생명주기를 관리하는 것을 컴포넌트 클래스라고 한다.
- Fragment 역시 개발자가 생명주기를 관리하지 않는다.
- 개발자가 코드로 직접 Fragment의 추가나 제거, 교체같은 작업을 요청하더라도
- 시스템에 요청을 통해 진행되기 때문에 개발자가 직접 Fragment 객체의 생명주기에 관여하지 않는다.
- 즉, 시스템이 Fragment 객체의 생명주기를 관리합니다.
👀 그럼 Fragment는 컴포넌트 클래스인가? → 놉 아님.
- Fragment는 해당 Fragment를 선언한 activity에 종속되어 있기 때문에
- 생명주기는 항상 activity를 통해 간접적으로 관리 된다.
- 따라서 Fragment는 독립적으로 존재할 수 없다.
- 즉, 앱의 진입점이 될 수 없는 것이다.
- 앱의 구성요소인 컴포넌트의 조건을 충족할 수 없기 때문에 컴포넌트라고 할 수 없다.
현재의 activity가 하나의 화면을 나타내다보니 똑같은 UI를 가지고 있지만 콘텐츠가 다른 경우
→ 해당 화면을 위해 비슷한 코드의 새로운 activity를 생성해야함
디바이스가 다양해지면서 화면의 크기도 천차만별로 달라짐
(태블릿 PC는 스마트폰의 화면에 비해 상당히 큰 화면을 가지고 있다. )
즉, 최적화를 위해 화면에 한 개 이상의 UI를 그려야 한다.
하지만 activity는 화면 하나만 나타내는 것이 가능하기 때문에 이러한 부분에서 큰 어려움을 가지고 있다.

👀 Fragment만 써도 됨? → 놉 안됨.
- Fragment는 activity에 종속된 클래스이기 때문에 반드기 activity 내에서만 사용가능
- 생명주기 또한 activity에 중속되어 단독으로 사용하는 것은 불가능
- 한마디로 정라히자면 : activity라는 화면이 있어야 Fragment라는 UI의 조각을 붙일 수 있는 것
activity는 안드로이드 앱의 화면을 구성하는 구성요소
Fragment는 activity에 종속된 화면의 전체 혹은 일부를 표시하는 구성요소
시스템의 activity 매니저에서 intent를 해석해 activity간 데이터를 전달
activity의 Fragment 매니저에서 메소드로 Fragment간 데이터를 전달

❓ Fragment는 자체 레이아웃을 가질 수 있으며 자체 생명 주기를 보유한다.
❓ 시스템에서 관리하는데 자체 생명주기를 보유한다?
→ 생명주기 보유하지 않는 뷰가 없다. 좀 어렵게 설명한거 뿐
Fragment를 사용하면 activity를 적게 만들 수 있다.
activity의 복잡도를 줄일 수 있다.
Fragment를 사용하면 재사용할 수 있는 레이아웃을 분리해서 관리가 가능하다.
Fragment를 사용하면 최소 1개의 activity안에서 Fragment 공간에 View만 집어넣으면
여러 activity를 만들지 않아도 여러 화면을 보여줄 수 있다.