(+ 추가로 공부하고 포스팅하기!)
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

5. Room

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

- RecyclerView에서 페이징 처리를 쉽고 효율적으로 작성하게 하기 위한 라이브러리
 
- 페이징 된 데이터의 메모리 내 캐싱
 
- 요청 중복 제거 기능이 기본으로 제공
 
- 데이터의 끝까지 스크롤할 때 어댑터가 자동으로 데이터를 요청
 
7. WorkManager
- WorkManager는 특정 작업을 유예(Defer) 처리, 비동기 처리를 제공
 
- JobScheduler, FirebaseJobDispatcher, AlarmManager 등을 통합한 라이브러리
 
- 처리해야 할 업무를 가지고 있는 Worker가 여러개 있을 때 순서를 지정하기 편리