[개념 콕] 안드로이드 액티비티와 프래그먼트의 차이점

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jun 05, 2024
[개념 콕] 안드로이드 액티비티와 프래그먼트의 차이점
✍🏼
안드로이드 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 안드로이드 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

액티비티(Activity)와 프래그먼트(Fragment)의 차이점

액티비티(Activity)란?

액티비티(Activity)는 안드로이드 애플리케이션의 화면 하나를 나타내는 구성요소로 사용자는 액티비티가 생성한 UI를 통해 애플리케이션과 상호 작용할 수 있습니다. 또한 각 액티비티는 독립적이어서 앱이 사용자와 상호작용하기 위한 진입점 역할을 하기도 합니다.
액티비티는 하나 이상의 뷰(View)나 뷰 그룹(View Group)을 가지고 있어야 하며, 이를 통해 UI를 표현합니다.
 
notion image
 

프래그먼트(Fragment)란?

프래그먼트(Fragment)는 액티비티(Activity)를 사용해 화면을 구성하며 발생하는 문제점을 보완하기위해 탄생한 클래스입니다.
액티비티를 사용해 화면을 구성하는 경우 크게 2가지의 문제점이 있습니다.
1) 한개의 액티비티가 하나의 화면을 나타내다보니 똑같은 UI를 가지고 있지만 콘텐츠가 다른 경우 해당 화면을 위해 비슷한 코드의 새로운 액티비티를 생성해야 합니다.
2) 디바이스가 다양해지면서 화면의 크기가 천차만별로 달라졌습니다. 특히 태블릿 PC는 스마트폰의 화면에 비해 상당히 큰 화면을 가지고 있습니다. 즉, 최적화를 위해 화면에 한 개 이상의 UI를 그려야 하는 것이죠. 하지만 액티비티는 화면 하나만 나타내는 것이 가능하기 때문에 이러한 부분에서 큰 어려움을 가지고 있습니다.
 
notion image
 
프래그먼트는 이러한 문제점을 해결할 수 있습니다. 프래그먼트는 UI를 모듈 형식으로 나누어 관리할 수 있도록 해주는 클래스로, 화면의 일부분만 차지하기 때문에 하나의 액티비티에 여러 개의 프래그먼트를 사용할 수 있습니다. 전체를 덮는다고 해도 전체 ‘면적’만 차지할 뿐, 화면 자체를 차지하는게 아니라는 의미입니다.
쉽게 이야기하자면 액티비티에 뷰나 뷰 그룹과 같이 프래그먼트를 생성해 화면을 그릴 수 있으며, 다시 프래그먼트 내부에 뷰나 뷰 그룹을 사용해 화면을 그릴 수 있습니다.
notion image
또한 컴포넌트 클래스가 아니기 때문에 각각의 클래스가 독립성을 지니지 않아 UI가 똑같은 화면의 경우 프래그먼트를 재사용해 불필요한 액티비티를 생성할 필요 없이 화면을 구성합니다.
 

프래그먼트만 써도 될까요?

아닙니다. 프래그먼트는 액티비티에 종속된 클래스이기 때문에 반드시 액티비티 내에서만 사용이 가능하며, 생명주기 또한 액티비티에 종속되어 단독으로 사용하는 것은 불가능합니다. 한마디로 액티비티라는 화면이 있어야 프래그먼트라는 UI의 조각을 붙일 수 있는 것입니다.
 

프래그먼트는 컴포넌트인가요?

앞서 언급한 것처럼 시스템에서 클래스 객체의 생명주기를 관리하는 것을 컴포넌트 클래스라고 합니다. 프래그먼트 역시 개발자가 생명주기를 관리하지 않습니다. 개발자가 코드로 직접 프래그먼트의 추가나 제거, 교체같은 작업을 요청하더라도 시스템에 요청을 통해 진행되기 때문에 개발자가 직접 프래그먼트 객체의 생명주기에 관여하지 않습니다. 즉, 시스템이 프래그먼트 객체의 생명주기를 관리합니다.
그렇다면 프래그먼트는 컴포넌트 클래스일까요? 아닙니다. 앞서 말했듯 프래그먼트는 해당 프래그먼트를 선언한 액티비티에 종속되어 있기 때문에 생명주기는 항상 액티비티를 통해 간접적으로 관리됩니다. 따라서 프래그먼트는 독립적으로 존재할 수 없습니다. 즉, 앱의 진입점이 될 수 없는 것이죠. 앱의 구성요소인 컴포넌트의 조건을 충족할 수 없기 때문에 컴포넌트라고 할 수 없습니다.
 
 

액티비티와 프래그먼트의 차이

액티비티는 안드로이드 앱의 화면을 구성하는 구성요소이고, 프래그먼트는 액티비티에 종속된 화면의 전체 혹은 일부를 표시하는 구성요소입니다.
 
  • 액티비티
    • 화면을 구성하기 위해 반드시 필요합니다.
    • 재사용이 불가능하며, 다른 화면이 필요할경우 새로운 액티비티를 생성해야 합니다.
    • 시스템에 의해 생명주기가 관리됩니다.
  • 프래그먼트
    • 화면의 일부분을 나타내는데 사용합니다. 화면 자체를 생성하는게 아니기 때문에 액티비티 내부에서 사용되어야 합니다.
    • 화면 자체가 아닌 화면을 표시하는 부분이기 때문에 다른 콘텐츠를 사용해 재사용하는 것이 가능합니다.
    • 프래그먼트 역시 고유한 생명주기를 가지고 있지만 액티비티의 생명주기 내에서 관리됩니다.
 
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 안드로이드 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 안드로이드 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 배영수 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter

내일배움캠프 블로그