본문 바로가기
공부/Android

Android - Fragment는 도대체 왜 사용하는 걸까?

by hhhello 2024. 6. 29.

요즘 깃헙에서 Android 프로젝트를 보다보면 Jetpack Compose를 사용하는 게 아닌 이상 전부 View가 Fragment로 도배되어 있다.

문득 든 생각이 도대체 Activity를 나두고 Fragment를 왜 쓰는 걸까?

Activity의 문제점

Activity안에 코드가 길어져 유지보수하기 어렵다는 의견도 있지만 나는 아래 사진의 문제점에 중점을 두고 싶다.

Android디바이스는 휴대폰, 태블릿 등으로 다양하다. 이건 경우 Activity로 View를 그리기에는 한계가 있다.

첫 번째 그림의 경우 Activity하나면 있어도 View를 다 그릴 수 있다. 하지만 두 번째 그림의 경우 화면이 작기 때문에 View가 두 개로 쪼개져야 한다.

Activity와 Fragment 차이점

Activity는 컴포넌트이고 Fragment는 컴포넌트가 아니다.

컴포넌트의 특징은 독립적이라는 건데 Fragment는 Activity나 상위의 Fragment에 종속적이기 때문이다.

컴포넌트가 아니기 때문에 AndroidMenifest파일에 등록할 필요도 없다.

Activity와 다른 Activity간에는 Intent라는 것으로 메세지를 전송하는데 Fragment와 다른 Fragment혹은 Activity의 경우 그냥 메서드로 호출하면 된다.

Fragment는 자신의 생명주기가 있긴 하지만 상위 View의 생명주기에 종속된다. 상위 View가 멈추거나 소멸되는 경우 본인의 View도 그렇게 된다.

Activity와 Fragment 언제 쓸까

Activity는 앱 전체의 UI 요소를 배치할 때 쓰고 Fragment는 단일 View 또는 View의 일부를 그릴때 쓴다.

Fragment 사용 시 주의점

Fragment는 재사용이 가능하기 때문에 어느 Activity에서 사용할 수 있다. 따라서 Fragment에서 Activity로 직접 접근할 경우 해당 Activity에 완전히 종속되기 때문에 모듈성과 재사용성이 떨어진다. interface를 만들어서 Activity에 장착시키는 방법으로 해결할 수 있을 것 같다.