지금까지 레이아웃 작업을 하면서 프래그먼트를 사용해서 뷰를 구성했던 적은 없지만 이것저것 검색하다 보면 자주 보이던 단어였다. 처음 안드로이드 개발을 위해 입문 도서를 읽었을 때 슥 읽고 지나간 기억뿐이었다. 그래서 이번에 프래그먼트가 무엇인지 찾아보기로 했다.
https://developer.android.com/guide/components/fragments?hl=ko
프래그먼트는 뜻처럼 독립적으로 사용하는 것은 아니라고 한다. 액티비티와 결합하여 하나의 형태로 만들어 사용하며, 쉽게 말하자면 액티비티의 모듈이다. 때문에 다른 액티비티에도 가져다가 재사용할 수 있다.
액티비티와 결합하여 사용하기 때문에 자신이 포함되어 있는 액티비티의 생명주기에 영향을 받지만, 자체적인 생명주기가 따로 존재한다. 다만, 액티비티 내에 존재하기 때문에 액티비티가 일시정지 상태이거나, 소멸할 경우에는 속해있는 프래그먼트도 같은 생명주기를 따라간다. 하지만 액티비티가 실행 중인 상태라면 개별적으로 추가나 삭제가 가능하며, 자체적인 생명주기를 수행할 수 있다.
프래그먼트는 본래 스마트폰이라는 일반적인 규격에서 태블릿처럼 다양한 크기의 기기들이 생겨나기 시작하면서 사용자에게 유동적인 인터페이스를 제공하기 위해 생겨났다고 한다.
액티비티에 결합하여 사용되는 모듈 형태이기 때문에 다른 액티비티에도 재사용이 용이하다는 특징이 있지만 디자인에 유의해야한다. 결합될 액티비티에서 프래그먼트의 제어를 하는 건 문제없지만 만약 프래그먼트가 다른 프래그먼트를 제어하는 디자인은 용이성을 해치는 행위가 된다.(코드로 따지면 결합도와 비슷하게 생각하면 되는 건가?) 즉, 프래그먼트는 최대한 독립적인 형태로 만들어야 하는 것 같다.
복잡하거나 어려운 프로젝트 구성을 해 본 경험이 없어서 보통 레이아웃을 구성할 때 xml에서 정적으로 짜놓지만, 자주 사용되거나 조건부로 구성되는 레이아웃은 코드상에서 동적으로 관리하는 방식으로 구성한다고 알고 있다. 후에 이런 레이아웃 구성을 할 일이 생겼을 때 사용하면 편리할 것 같다.
'Android (Kotlin)' 카테고리의 다른 글
[Android/안드로이드] 코틀린 require, requireNotNull, check, checkNotNull 이건 뭐지? (0) | 2022.08.30 |
---|---|
[Android/안드로이드] 위치 서비스(GPS) 기능 설정 팝업 (2) | 2022.08.26 |
[Android/안드로이드] 서비스는 뭐지? (Background, Foreground) (0) | 2022.08.19 |
[Android/안드로이드] 카카오맵 API를 사용해보자 (Kakao Map API) (0) | 2022.08.17 |
[Android/안드로이드] Context는 대체 뭐지? (0) | 2022.08.16 |
최근댓글