You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
저희 앱에는 현재 Bottom Navigation에서 FragmentManager를 사용해 Fragment간의 전환을 구현하고 있죠?
저는 이 방법 대신 사용할 수 있는 Navigation Component에 대해 소개하려고 합니다.
Navigation Compenet를 사용해야 하는 이유
상호작용
현재 Fragment Manager를 통해 프래그먼트를 추가, 교체하고 백스택에 추구하는 작업을 하고 있습니다. 또한 트랜젝션 관리를 하기도 하는데 저희는 parentFragmentManager, childFragmentManager 에 대한 개념이 부족해 현재 메모리 누수가 발생하고 있고, 추가 되는 화면에 대한 메모리 누수 방지를 하기 위해 이 개념을 완벽히 숙지해야할 필요가 있습니다.
하지만Navigation Component를 사용하게 되면 개발자를 대신해 Frament Manager를 사용하기 때문에 직접적으로 상호작용하지 않아도 되는 이점이 있습니다. Fragment, Backstack, Fragment Manager 사용에 대한 권장 사항을 따르므로 개발자가 신경 써야 할 점들이 줄어듭니다.
UI 전환
Frament를 사용한 UI 전환을 구현하려고 하면 트랜젝션 관리와, 데이터 전달, 애니메이션 처리 코드를 모두 작성해야 하는데, Navigation Component는 네비게이션 그래프 지원, Shared Element Animation 지원, Pop stack 관리 등을 제공하기 때문에 쉽게 개발이 가능합니다.
Navigation UI
Navigation Component는 Navigation UI Class를 포함하고 있는데 이 클래스는 바텀네비, 상단 앱바 등을 Navigation Component로 관리할 수 있도록 기능을 제공하고 있습니다. 클릭 이벤트의 처리에 대한 코드를 상당히 많이 줄일 수 있습니다.
Safe Argument
Bundle을 이용해 Fragment 간의 데이터를 전달할 때, 이 과정에서 데이터의 이름이나 타입이 맞지 않을 경우 에러가 발생할 수 있습니다. Navigation Component에서는 SafeArgs라는 Gradle Plugin을 지원하며, 타입 안성을 보장합니다.
시각화
화면이 많아지고, 연관 관계가 복잡해지면 개발자 역시 혼란에 빠질 수 있습니다. Navigation Component를 사용하면, 이를 Android Studio 내에서 시각화하여 볼 수 있고 연관 관계, 종속 관계에 대해 쉽게 파악할 수 있습니다.
같은 그래프 내 ViewModel 공유
화면이 많은 로그인, 회원가입 등등에서 관련 데이터를 주고 받을 수 있는 ViewModel을 공유할 수 있습니다.
안녕하세요 스미무 여러분 티뱃여우입니다. 스퀘어 첫 이슈는 제가 먹겠습니다.
저희 앱에는 현재 Bottom Navigation에서 FragmentManager를 사용해 Fragment간의 전환을 구현하고 있죠?
저는 이 방법 대신 사용할 수 있는 Navigation Component에 대해 소개하려고 합니다.
Navigation Compenet를 사용해야 하는 이유
상호작용
현재 Fragment Manager를 통해 프래그먼트를 추가, 교체하고 백스택에 추구하는 작업을 하고 있습니다. 또한 트랜젝션 관리를 하기도 하는데 저희는 parentFragmentManager, childFragmentManager 에 대한 개념이 부족해 현재 메모리 누수가 발생하고 있고, 추가 되는 화면에 대한 메모리 누수 방지를 하기 위해 이 개념을 완벽히 숙지해야할 필요가 있습니다.
하지만Navigation Component를 사용하게 되면 개발자를 대신해 Frament Manager를 사용하기 때문에 직접적으로 상호작용하지 않아도 되는 이점이 있습니다. Fragment, Backstack, Fragment Manager 사용에 대한 권장 사항을 따르므로 개발자가 신경 써야 할 점들이 줄어듭니다.
UI 전환
Frament를 사용한 UI 전환을 구현하려고 하면 트랜젝션 관리와, 데이터 전달, 애니메이션 처리 코드를 모두 작성해야 하는데, Navigation Component는 네비게이션 그래프 지원, Shared Element Animation 지원, Pop stack 관리 등을 제공하기 때문에 쉽게 개발이 가능합니다.
Navigation UI
Navigation Component는 Navigation UI Class를 포함하고 있는데 이 클래스는 바텀네비, 상단 앱바 등을 Navigation Component로 관리할 수 있도록 기능을 제공하고 있습니다. 클릭 이벤트의 처리에 대한 코드를 상당히 많이 줄일 수 있습니다.
Safe Argument
Bundle을 이용해 Fragment 간의 데이터를 전달할 때, 이 과정에서 데이터의 이름이나 타입이 맞지 않을 경우 에러가 발생할 수 있습니다. Navigation Component에서는 SafeArgs라는 Gradle Plugin을 지원하며, 타입 안성을 보장합니다.
시각화
화면이 많아지고, 연관 관계가 복잡해지면 개발자 역시 혼란에 빠질 수 있습니다. Navigation Component를 사용하면, 이를 Android Studio 내에서 시각화하여 볼 수 있고 연관 관계, 종속 관계에 대해 쉽게 파악할 수 있습니다.
같은 그래프 내 ViewModel 공유
화면이 많은 로그인, 회원가입 등등에서 관련 데이터를 주고 받을 수 있는 ViewModel을 공유할 수 있습니다.
이번 프로젝트에서 이 라이브러리에 대해 공부하면, 앞으로 유용하게 사용할 수 있을 것 같아 공유드립니다.
공식문서를 첨부하면서 글 마치겠습니다. 다들 행복한 하루 보내세요~
https://developer.android.com/guide/navigation/navigation-getting-started?hl=ko#kts
+) 유의사항 https://www.charlezz.com/?p=1413
The text was updated successfully, but these errors were encountered: