안드로이드/안드로이드 이론

[안드로이드] Activity와 Fragment

PureStack 2021. 12. 20. 00:22

Activity (액티비티)

  • Activity는 안드로이드 4대 컴포넌트 중 하나로 사용자에게 실제로 보여지며, 사용자와 상호작용하는 화면을 말한다.
  • 다시 말해서, 사용자가 앱에 접근할 수 있게 하며, 다양한 활동을 할 수 있도록 하는 일종의 페이지이다.
  • Activity는 하나 이상의 View 또는 ViewGroup을 가지고 있어야 하며, 한 번에 하나의 Activity만 보일 수 있다.
실생활 비유
=> 집에는 여러 방들이 존재한다. 개인은 한 번에 한 개의 방 내부만 확인할 수 있다. 
여기에서 하나의 방이 Activity가 되고, 그 방에 존재하는 여러 물건들을 View나 ViewGroup이라고 볼 수 있다.

Fragment (프래그먼트)

  • Fragment는 Activity와 View를 모두 포괄하는 개념이다.
  • 원칙적으로는 View의 개념을 가지고 Activity 위에 배치되어 있지만, Activity의 개념 역시 지니며 그 위에 다른 View들을 배치할 수 있다.
  • Fragment의 탄생 배경
    • 큰 화면에 들어가는 많은 View들을 단일 Activity에서 관리하기가 부담스럽다.
    • Fragment에 View들을 나눠 배치함으로써 Activity에서 이러한 부담들을 덜어낼 수 있었다.
    • Activity는 상대적으로 Fragment보다 무겁기 때문에, 새 Activity를 생성하는 것도 상대적으로 느리며, 기존 Activity를 destroy하지 않으면 이를 stack에 쌓아 두는 것 또한 메모리 부분에서 부담스럽다.
    • 사용자가 Activity를 변경하지 않아도 쉽게 View를 변경할 수 있어서 많이 이용한다.
실생활 비유
=> 방 안의 여러 수많은 물건들을 무작정 정리하는 것이 아니라, 구역을 나눠서 정리한다.
이를 테면, 방 안에 책상과 책꽂이, 침대와 같이 큰 물건들을 놓으면서 방을 크게 나눈다. 
그리고 책상 위에 노트북, 공유기, 자주 보는 책들을 올려놓고 책꽂이에는 여러 책들을 넣는다. 
마지막으로, 침대 위에는 배게와 이불을 정리한다.
여기서 책상이나 책꽂이, 침대 등을 Fragment라고 할 수 있다.

Activity와 Fragment의 차이점

  • Activity는 독립적으로 활용 가능하지만, Fragment는 기본적으로 Activity에 종속되어 있다.
  • Activity는 전체 화면을 차지하는 반면에, Fragment는 전체 화면이 아닌 일부 화면으로 구성되므로 상대적으로 유연한 UI 설계가 가능하다.
  • Activity는 자동적으로 stack에 들어가고, Fragment는 Transaction을 통해 요청함으로써 들어간다.