-
Jetpack - AAC안드로이드 학습/Android 기술면접 대비 2023. 6. 13. 13:31
차례: 1) Jectpack이란? 2) AAC(Android Architecture Components)란? 3) MVVM 구조
1. Jetpack이란
구글 developer사이트에 보면 Jetpack을 이렇게 설명하고 있다.
"Jetpack은 개발자가 중요한 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 감소, 여러 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 묶음입니다."
(참조 : 구글 developer 페이지)JetPack은 구글에서 제공하는 안드로이드 컴포넌트 라이브러리 모음이다. Jetpack을 통해 좀 빠르고 질 좋은 앱을 개발하는데 많은 도움이 된다.
Android Jetpack 2. AAC(Android Architecture Components)란?
Jetpack은 그림에서 보다시피 Jetpack은 4가지 범주로 나눠져있다. ( Architecture, UI, Foundation, Behavior ).
그중에서 'Architecture' (AAC) 는 다음과 같이 구성되어있습니다.
- Databinding
- Lifecycles
- LiveData
- Navigation
- Paging(Gradually loading information)
- Room
- ViewModel
- WorkManager
Lifecycles:
- Lifecycles는 Android 앱의 생명주기를 관리하는 데 사용되는 라이브러리입니다. 안드로이드 액티비티나 프래그먼트와 같은 컴포넌트는 사용자 상호작용에 따라 상태가 변화하며, Lifecycles는 이러한 상태 변화를 인식하고 처리하는 데 도움을 줍니다.
- Lifecycles를 사용하면 앱 컴포넌트의 생명주기 이벤트를 쉽게 감지하고, 이를 기반으로 필요한 작업을 수행할 수 있습니다. 예를 들어, 액티비티가 활성화되거나 일시 중지될 때 특정 동작을 수행하도록 설정할 수 있습니다.
LiveData:
- LiveData는 라이프사이클과 함께 사용되는 관찰 가능한 데이터 홀더입니다. LiveData를 사용하면 데이터의 변경을 감지하고, 이를 UI에 자동으로 반영할 수 있습니다.
- LiveData는 생명주기를 인식하여 액티비티나 프래그먼트 등의 관찰자에게만 업데이트를 전달하므로, 앱의 데이터 일관성을 유지하면서 메모리 누수와 같은 문제를 방지할 수 있습니다.
- 또한, LiveData는 백그라운드 스레드에서 데이터 변경을 수행할 수 있어 UI 갱신 작업을 안전하게 처리할 수 있도록 지원합니다.
Navigation:
- Navigation은 사용자의 앱 내 탐색을 관리하기 위한 라이브러리입니다. 안드로이드 앱은 일반적으로 다양한 화면 간의 이동이 필요한데, Navigation은 이러한 화면 간 전환을 쉽게 처리할 수 있도록 도와줍니다.
- Navigation은 화면 간 전환에 필요한 프래그먼트 간 이동, 액티비티 간 이동, 깊은 링크 지원 등을 지원하며, 일관된 사용자 경험을 제공하는 데 도움을 줍니다.
- 또한, 시각적 탐색 그래프를 통해 앱의 전체 탐색 구조를 시각화하고 관리할 수 있습니다.
ViewModel:
- ViewModel은 앱의 UI와 관련된 데이터를 처리하고 유지하는 데 사용됩니다. 화면 회전과 같은 구성 변경 시에도 데이터를 보존하여 데이터 유지 및 복원을 용이하게 해줍니다.
LiveData:
- LiveData는 관찰 가능한 데이터 홀더로, 앱의 데이터 변경 사항을 UI에 알리는 데 사용됩니다. LiveData는 생명주기를 인식하여 관찰자에게만 업데이트를 전달하므로, 메모리 누수와 같은 문제를 방지하면서 데이터의 일관성을 유지합니다.
Room:
- Room은 SQLite를 기반으로 한 데이터베이스를 쉽게 구축하고 사용할 수 있도록 도와줍니다. Room은 ORM(Object-Relational Mapping) 패턴을 따르며, 간단한 인터페이스를 통해 데이터베이스 액세스를 추상화합니다.
Paging:
- Paging은 대량의 데이터를 페이지로 나누어 로딩 및 표시를 최적화하는 데 사용됩니다. RecyclerView와 함께 사용되며, 원활한 스크롤과 효율적인 메모리 사용을 제공합니다.
DataBinding
- Data Binding은 안드로이드 앱에서 UI 컴포넌트와 데이터를 바인딩하는 데 사용되는 라이브러리입니다.
- Data Binding은 XML 파일을 사용하여 UI 요소를 정의하고, 이러한 UI 요소를 앱의 데이터 모델과 연결합니다.
- 이렇게 연결된 데이터 모델은 UI 요소에 대한 변경 사항을 자동으로 감지하고 업데이트합니다.
- 이는 UI와 데이터 사이의 동기화를 간소화하고, 코드량을 줄여주며, 작성해야 할 반복적인 코드를 최소화하는 데 도움이 됩니다.
- Activity나 Fragment에 findViewById 없이 xml에 직접 연결
WorkManager:
- WorkManager는 앱의 백그라운드 작업을 예약하고 실행하기 위한 라이브러리입니다. 장치의 상태 및 전력 관리 정책을 고려하여 최적의 실행 시기를 결정하고, 신뢰성 높은 작업 실행을 제공합니다.
3. MVVM 구조 :
AAC를 활용하면 현재 구글에서 권장하는 MVVM 구조로 앱 설계가 가능해진다.
Activity / Fragment
- 유저에게 보여지는 UI, 즉 View에 해당되는 부분
ViewModel
- ViewModel에 해당되며, View가 요청한 데이터를 Model로 요청하고 중간 다리 역할을 한다
LiveData
- LiveData를 통해 데이터 변화 감지.
DataBinding
- XML에서 ViewModel의 LiveData를 바인딩하여 관찰하고, DataBinding으로 연결시킨 부분의 데이터 업데이트
Repository
- ViewModel에서 요청한 데이터를 내부 데이터베이스(room)에서 불러오거나, 외부 서버가 있다면 통신(retrofit)을 통해 데이터를 불러오고 불러온 데이터를 저장하고 가공해서 ViewModel에게 전달한다.
'안드로이드 학습 > Android 기술면접 대비' 카테고리의 다른 글
AAC - Databinding (0) 2023.06.21 안드로이드 Context (0) 2023.06.16 Activity와 Fragment 그리고 생명주기 (0) 2023.06.12 ANR이란 (0) 2023.06.12 Android Service (0) 2023.06.12