-
Activity와 Fragment의 차이점 및 사용 이유안드로이드 학습/Android 기술면접 대비 2024. 1. 8. 09:03
1. Activity :
Activity는 Android의 4대 Component중 하나로 사용자에게 실제로 보이며, 사용자와 상호 작용하는 화면을 말한다. Activity는 하나 이상의 View또는 ViewGroup을 반드시 가지고 있어야 하며, 한 번에 하나의 Activity만 Disaplay할 수 있다.
더보기ViewGroup 과 View 란????
ViewGroup :
- ViewGroup은 n개의 View를 포함할 수 있는 Container이다.
- 우리가 자주 쓰는 레이아웃이 ViewGroup에 해당한다. ex) LinearLayout, ConstraintLayout ...
View :
- 안드로이드에서 사용자가 눈으로 보는 모든 것은 View이다. 화면의 기본적인 컴포넌트라고 얘기 할 수 있다. TextView, ImageView, EditText, ... 등 자주 쓰는 모든 UI 관련된 컴포넌트는 View라는 클래스를 상속 받는다.
2. Fragment :
Fragment는 간단하게 말하면 Activity + View라고 할 수 있다. View의 개념을 가지고 Activity위에 배치되지만, Activity의 개념을 가지고 그 위에 다른 View들을 배치할 수 있는 것이다.
a) Fragment가 나온 이유 :
Activity가 존재하는 상황에서 Fragment가 나온 이유는 Activity가 가지고 있는 문제점이 있기 때문이다.
- 뷰가 다양하게 있을때 모든 뷰를 Activity에 관리하면 코드가 길어지고 이것은 유지보수할 때 관리가 어려워짐
- 안드로이드가 여러 디바이스 (예 : 태블릿) 을 지원하면서 다양한 기기의 화면에 대응할 필요가 있어졌기 때문이다..
Fragment는 기본적으로 큰 화면에서 역동적이고 유연한 UI 디자인을 지원하는 것이 목적이었다.
Activity & Fragment b) Fragment 특징 :
- Activity와 다른 자체적인 생명주기를 가지고 있다. (참고링크 : https://from-android-to-server.tistory.com/125)
- 독립적으로 존재 못하며 Activity나 다른 Fragment에 붙어서 사용된다.
- Android Jetpack 라이브러리 중 Navigation, BottomNavigationView, ViewPager2 등은 프래그먼트와 호환되도록 설계되어 있어서 프래그먼트가 해당 라이브러리와 함께 자주 사용됩니다.
c) Fragment 장단점 :
장점 :
- 액티비티는 무겁다. (Activity를 새로 띄우는 것 보다는 Activity 위에 Fragment를 올리는 것이 훨씬 빨리 처리되고 system resource도 적게 먹으므로 Fragment를 띄우는 것이 좀 더 가볍고, Activity는 무겁다고 표현하는 것.)
- Activity 내에서 Fragment는 상대적으로 가볍게 추가/제거가 가능하다.
- UI를 모듈화하여 재사용하고 화면 구성을 더욱 쉽게 할 수 있도록 도와준다.
- Activity Stack에 Activity를 쌓아두기보다 Fragment Backstack에서 Fragment를 관리하는게 메모리 관리에서의 효율도 챙기고 화면 전환시에 Activity보다 더 순조롭다.
Activity Stack
단점:
- 트랜잭션 내에서 문제가 발생한다면 오류 발생
- Activity의 생명주기에 Fragment 생명주기까지 관리 필요
3. Fragment 와 Activity의 차이점
- Activity는 독립적 활용 VS Fragment는 Activity에 종속.
- Activity는 전체화면을 차지 VS Fragment는 전체 화면 and 부분 (디자인에 많은 유연성 가짐)
- Activity는 자동적으로 스택에 넣어지고 Fragment는 트랜잭션을 통해서 요청해야 한다.
Fragment 사용 예:
- 하나의 Activity 내에 혹은 태블릿 등의 큰 화면에서 공간 낭비 없는 UI를 구성하고 싶을때
- 전체적인 배경 틀은 같고 일부 UI 만 바뀔때
결론 :
- 프로젝트가 커질수록 하나의 Activity를 재활용 할 수 있다면 재활용하고 거기에 Fragment를 교체하는 방식으로 활용하는 것이 좀 더 리소스를 적게 먹을 것이다.
- 다만 프로젝트가 작다면 그냥 Activity를 사용하는 것이...
'안드로이드 학습 > Android 기술면접 대비' 카테고리의 다른 글
안드로이드 프로세스 및 어플리케이션 생명주기 (0) 2024.01.18 Activity and Activity LifeCycle (생명주기) (0) 2024.01.08 Rxjava (0) 2024.01.05 안드로이드 4대 컴포넌트 (0) 2023.08.13 Intent (인텐트) 와 Bundle (0) 2023.07.11