ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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의 차이점 

    1. Activity는 독립 활용 VS Fragment는 Activity에 종속.
    2. Activity 전체화면을 차지 VS Fragment는 전체 화면 and 부분 (디자인에 많은 유연성 가짐)
    3. Activity는 자동적으로 스택에 넣어지고 Fragment는 트랜잭션을 통해서 요청해야 한다.

    Fragment 사용 예:

    • 하나의 Activity 내에 혹은 태블릿 등의 큰 화면에서 공간 낭비 없는 UI를 구성하고 싶을때
    • 전체적인 배경 틀은 같고 일부 UI 만 바뀔때

    결론 : 

    • 프로젝트가 커질수록 하나의 Activity를 재활용 할 수 있다면 재활용하고 거기에 Fragment를 교체하는 방식으로 활용하는 것이 좀 더 리소스를 적게 먹을 것이다. 
    • 다만 프로젝트가 작다면 그냥 Activity를 사용하는 것이...
Designed by Tistory.