안드로이드 25) Android Architecture Components (AAC)

밍나·2022년 2월 5일
0

Android

목록 보기
25/36

(+ 추가로 공부하고 포스팅하기!)

Concepts of AAC

1. Android Architecture Components

  • 2017 Google I/O에서 발표, 2018 Google I/O에서 발표된 Jetpack으로 통합
  • Architecture Components가 공개되기 전까지는 안드로이드 앱에서 특정 Architecture가 권장되지 않았다
    • 개발자들에 따라 MVP, MVC, MVVM, MVPP 등 다양한 아키텍처 선택
  • 또한 안드로이드는 여러 컴포넌트들이 있고 생명주기가 다르게 얽혀있어 앱을 잘 만들기 위해서는 이러한 컴포넌트들을 부드럽게 연결해야 하는데 이를 학습하는 것은 개발자의 몫이었다
  • 구글에서는 이러한 문제를 해결하기 위해 안드로이드 앱을 위한 아키텍처를 정의하고 이를 구현하기 위한 라이브러리를 제공하고자 architecture components를 공개
  • 종류
    • DataBinding
    • Lifecycle
    • Navigation
    • Room
    • Paging
    • WorkManager
    • Livedata(다음 게시물)
    • ViewModel(다음 게시물)

2. DataBinding

<layout>
    <data>
        <variable name="model1" type="com.example.text_databinding.User" />
    </data>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text='@{"i am include xml.. binding data : "+model1.name}' />
</layout>
  • Data를 UI에 쉽게 Binding 하기 위한 라이브러리
  • findViewById()에 의한 View 객체 획득 및 이용의 번거로움을 제거하기 위한 목적
  • DI로 유명한 Butterknife 등의 라이브러리 이용보다 효율적

3. Lifecycle Aware Components

  • Activity와 Fragment의 Lifecycle 처리와 다른 나머지 코드들을 따로 구성
  • Activity나 Fragment는 Lifecycle의 Owner, LifeCycle을 따로 처리하는 곳이 Observer
  • Observer가 자동으로 Owner의 라이프사이클 상황을 감지하고 실행하게 해주는 것이 Lifecycle Aware Components

4. Navigation Components

  • JetPack의 Library 혹은 Android Studio의 Tool
  • Activity, Fragment가 화면이 어떻게 설계되어 있고, 서로 간에 어떻게 연결되어 있는 지를 툴 베이스적으로 도식화 시킨 것
  • 화면의 흐름뿐만 아니라 데이터가 무엇이, 어떤 형식으로 넘겨야하는지도 도식화 가능
  • 하나의 main activity에 여러 개의 fragment로 화면을 설계하는 것을 목적으로 함
    https://developer.android.com/guide/navigation/navigation-getting-started

5. Room

  • SQLite 추상화 라이브러리
    • 내부적으로는 SQLite 이용
    • 코드를 작성하기 편하게 SQLite를 추상화한 것으로 함수에 정보만 주면 됨
  • 안드로이드 앱의 데이터베이스 이용을 Room으로 권고

6. Paging

  • RecyclerView에서 페이징 처리를 쉽고 효율적으로 작성하게 하기 위한 라이브러리
  • 페이징 된 데이터의 메모리 내 캐싱
  • 요청 중복 제거 기능이 기본으로 제공
  • 데이터의 끝까지 스크롤할 때 어댑터가 자동으로 데이터를 요청

7. WorkManager

  • WorkManager는 특정 작업을 유예(Defer) 처리, 비동기 처리를 제공
  • JobScheduler, FirebaseJobDispatcher, AlarmManager 등을 통합한 라이브러리
  • 처리해야 할 업무를 가지고 있는 Worker가 여러개 있을 때 순서를 지정하기 편리
profile
🤗🤗🤗

0개의 댓글