안드로이드 프래그먼트는 동적 레이아웃을 쉽게 만들고 유지 관리하기 위해 개발되었습니다. 초기 안드로이드 개발에서는 Activity 하나에 모든 기능을 구현해야 했습니다. 이는 코드 복잡도를 높이고 유지 관리를 어렵게 만들었습니다.
프래그먼트는 다음과 같은 장점이 있습니다.
1. 코드재사용: 프래그먼트는 재사용 가능한 UI 구성 요소로, 여러 Activity에서 공통적으로 사용되는 기능을 구현하는 데 유용합니다.
2. 유연한 레이아웃: 프래그먼트를 사용하면 다양한 레이아웃을 쉽게 만들고 변경할 수 있습니다. 화면 크기나 방향에 따라 동적으로 에이아웃을 조정하는 데도 유용합니다.
3. 효율적인 메모리 사용: 프래그먼트는 화면의 일부만 표시하기 때문에 Activity보다 메모리 사용량이 적습니다. 이는 특히 저사양 기기에서 중요합니다.
4. 향샹된 성능: 프래그먼트는 필요한 부분만 업데이트하기 때문에 Activity보다 성능이 뛰어납니다.
5. 모듈화: 프래그먼트는 기능별로 모듈화하여 코드 관리를 용이하게 합니다.
프래그먼트 라이프사이클을 살펴보면 다음과 같습니다.
Fragment Lifecycle | Activity Lifecycle |
![]() |
![]() |
엑티비티와 상당히 흡사한 구조를 가지고 있는 것을 확인할 수 있습니다.
엑티비티에서 프래그먼트를 구성하여 로그를 확인해보겠습니다.
인텐트를 통하여 엑티비티를 실행시키고 엑티비티 내에서 프래그먼트가 구성되도록 하였습니다.
이때 엑티비티와 프래그먼트의 로그를 확인하면 외쪽과 같은 결과를 확인 할 수 있습니다.
이를 확인하면 엑티비티와 프래그먼트는 각자의 수명주기를 가졌음에도 긴밀한 연결성이 있다는
생각이 듭니다.
엑티비티의 오버라이딩한 수명주기 함수를 살펴보도록 하겠습니다.
우리가 사용하는 Activity는 AppCompactActivity를 부모클래스로 하며 AppCompackActivity는 FragmentActivity를 상속받고 있습니다.
FragmentActivity에서 확인할 수 있었던 우측의 자료와 엑티비티 수명주기 메서드 모두를 살펴본 것을 토대로 프래그먼트가 액티비티에서 기인한다는 것을 다시 한번 알 수 있었습니다.
엑티비티와 프래그먼트의 백스택을 비교하면 다음과 같습니다.
엑티비티의 경우 destroy 되지 않은 엑티비티의 경우 메모리에 뷰가 계속해서 남아 있습니다.
하지만 프래그먼트의 경우 최상단의 프래그먼트가 아닌 것은 onDestroyView state에 진입하면서 메모리 공간을 비우게 됩니다.
메모리가 한정적인 상황에서는 엑티비티와 비교하였을때 상당한 장점을 가지게 됩니다.