(+ 추가로 공부하고 포스팅하기!)
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가 여러개 있을 때 순서를 지정하기 편리