유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

[10분 테코톡] 디랙의 Fragment

우아한테크

2025. 7. 11.

0

#mobile app
  • 프래그먼트는 액티비티 내에서 동작하는 UI 조각으로, 자체 생명 주기와 레이아웃을 가지며 다양한 화면 크기에 유연하게 대응하기 위해 등장했습니다. 🧩
  • 2010년대 태블릿 시장 확대에 따라 안드로이드가 다양한 화면 크기를 지원해야 할 필요성이 커지면서, 액티비티의 비대화 및 유지보수 어려움을 해결하기 위해 2011년 허니콤 버전에서 도입되었습니다. 📱↔️💻
  • 프래그먼트는 단독으로 존재할 수 없으며, 액티비티나 다른 프래그먼트(호스트)에 포함되어야 하고, FragmentManager를 통해 추가, 제거, 교체 등의 관리가 이루어집니다. 🏠
  • FragmentManager는 호스트 액티비티의 최상위 프래그먼트 관리를 위한 supportFragmentManager, 상위 요소의 매니저를 위한 parentFragmentManager, 중첩된 프래그먼트 관리를 위한 childFragmentManager로 나뉩니다. 🌳
  • 프래그먼트 조작은 beginTransaction()으로 시작하여 add, replace, remove 등의 작업을 수행하고, 반드시 commit()을 호출해야 실제 적용되는 트랜잭션 단위로 이루어집니다. 🔄
  • 프래그먼트 생명 주기는 onAttach부터 onDetach까지 액티비티와 유사하지만, onCreateView, onViewCreated, onDestroyView 등 뷰 관련 추가 콜백이 존재합니다. ♻️
  • onAttach에서 호스트 연결, onCreate에서 비UI 초기화, onCreateView에서 레이아웃 인플레이트, onViewCreated에서 뷰 설정, onResume에서 사용자 상호작용 가능 상태가 됩니다. 🚀
  • onPause에서 UI 상태 저장, onStop에서 화면에서 사라짐, onDestroyView에서 뷰 정리, onDestroy에서 리소스 해제, onDetach에서 호스트 분리 작업이 이루어집니다. 🛑
  • 프래그먼트 사용 시 주의할 점으로, onDestroyView에서 뷰 참조를 null로 설정하여 프래그먼트가 뷰보다 오래 살아남아 발생하는 메모리 누수를 방지해야 합니다. 💧
  • 시스템이 프래그먼트 재생성 시 인자 없는 기본 생성자를 호출하므로, 생성자에 파라미터를 추가하려면 Custom FragmentFactory를 사용하여 오류를 방지해야 합니다. 🛠️

Recommanded Videos