유연한 UX/UI 구현
태블릿과 같은 큰화면에서 UX/UI를 역동적이고 유연하게 구현할 수 있다.
따라서 복잡한 화면 구성에 있어 Fragment를 자주 사용한다.
재사용성 증가
View 또는 비즈니스 로직을 Fragment 단위로 분리할 수 있다.
아키텍처 원칙에서 가장 중요한 원칙인 관심사 분리를 통해 의존성을 분리하고 독립성을 키우게 되는 것이다.
이러한 부분을 잘 이용하면 Fragment로 구현한 내용을 다른 Activity 또는 Fragment에서 재사용할 수 있다.
퍼포먼스
Acivitiy는 무겁다. 왜 무거운 것일까?
Actiivity의 경우 항상 시스템이 개입하며, 새로운 Acitivity의 생성, 전환, 소멸 등의 과정은 상호작용하는 Acitivity를 직접적으로 참조하지 않고 Intent와 SystemService 등의 중간 과정이 필요하기 때문이다.
이에 비해 Fragment는 호스팅하는 Acitivty 내에서 FragmentManager에 의해 관리가 되기 때문에 상대적으로 가볍게 추가/제거가 가능하다. FragmentManager를 사용하여 직접적인 객체의 참조를 얻을 수 있고 메모리 영역도 공유할 수 있다.
또한, Fragment는 객체 생성과정에서 시스템의 보조가 필요하지 않다.
따라서, 액티비티를 전환하는데 소모하는 리소스가 프래그먼트를 전환하는데 소모하는 리소스 보다 훨씬 크며,
결과적으로는 Acivitiy 스택에 Activity를 쌓아두는 것보다 Fragment 백스택에서 Fragment를 관리하는 것이 메모리 관리면에서 효율적이다.
데이터 공유하기
Activity간 데이터를 공유하는 가장 일반적인 방법은 인텐트(Intent)를 사용하는 방법 밖에 없다.
Activity는 다른 프로세스에서 실행하는 것을 염두하고 설계 되었기 때문에 메모리 영역을 공유하지 않는다.
그렇기 때문에 리눅스 커널 레벨에서 프로세스간 통신(IPC)을 하게 되는데, 이 부분에서 많은 제약사항이 생기며, 메모리를 직접 공유하는 것보다 퍼포먼스가 많이 떨어지게 된다. 즉, 화면 간에 정보 교환이 어렵다는 것이다. (Intent가 쓰기 번거롭다.)
Fragment를 직접 사용하는 경우 Fragment 간 데이터 공유는 Activity 내에서 자유롭게 이루어진다.
참고자료
Activity vs Fragment, 무엇을 선택해야 할까?
프레그먼트(Fragment)를 처음 도입한것은 2011년 2월 에 등장한 Android 3.0(Honey comb, API11) 부터다. 안드로이드 등장 초기부터 함께 했기 때문에 프레그먼트를 모르는 안드로이드 개발자는 없을 것으로
charlezz.medium.com
https://medium.com/shdev/activity%EC%99%80-fragment-f442dc854220
Activity와 Fragment
ACP week 1,2-Activity & Fragment
medium.com
'Android > Android 기초' 카테고리의 다른 글
[Android] 안드로이드의 Window에 대한 이해 (0) | 2025.01.09 |
---|---|
[Android] 태스크 (Task)와 백 스택(Back Stack) (2) | 2024.12.18 |
[Android] Fragment Manager (0) | 2024.12.16 |
[Android] Theme vs Style (3) | 2024.10.27 |
[Android] 메모리 누수 & 분석 (0) | 2024.06.03 |