ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.