본문 바로가기
안드로이드(kotlin)

안드로이드 MVVM을 사용하기 위한 필수 요소 AAC란 무엇인가?

by 기계공학 주인장 2023. 3. 21.
반응형

기존에 사용하던 MVVM을 좀 더 간편하게 좀 더 정확하게 사용하기 위해 나온 것이 AAC이다.

 

즉, AAC란 아키텍쳐가 아니라 MVVM을 좀 더 잘 사용하기 위한 도구라고 생각하면 쉽다.

 

이전에 MVVM이란 무엇인지에 대해 블로그를 작성했으니 아래 내용을 참조해주길 바란다.

 

안드로이드 MVVM 아키텍쳐란 무엇인가?

 

안드로이드 MVVM 아키텍처란 무엇인가 필요성과 그 배경

안드로이드 MVVM 아키텍처 MVC vs MVP vs MVVM 비교 MVVM의 탄생 이유 및 필요성 MVVM 구현 방법 MVC : View와 Controller를 Activity, Fragment에서 담당 MVC 패턴의 경우 그림과 같이 View와 Controller가 연결되어 있습

android-developer.tistory.com


Android Archtecture Component

MVVM을 좀 더 효율적으로 사용하기 위해 탄생한 라이브러리 모음이다.

 

흔히 말하는 Jetpack도 여기에 속한다.

 

위 그림의 구조에 대해 짧게 설명하면

 

View

사용자와 상호작응하며 UI를 출력해주는 부분이다.

 

ViewModel

UI에 필요한 데이터를 Repository로 부터 받아오고 데이터를 UI에 출력하기 알맞은 형태로 변환하기도 한다.

 

LiveData

View의 생명주기를 감지하며 데이터가 변했다면 View에 해당 데이터를 반영해준다.

 

Repository

Local DB(Room)에서 데이터를 받아온다.

 

Room

로컬 데이터 베이스 만들기 위해 사용된 AAC의 한 종류이다.

 


구글에서 발표한 AAC 공식 라이브러리

2017년 구글에서 발표한 AAC 공식 라이브러리는 다음과 같습니다.

 

  1. Lifecycles(Easy handling lifecycles) 
  2. LiveData(Lifecycle aware observable)
  3.  ViewModel(Managing data in a lifecycle) 
  4. Room(object Mapping for SQLite) 
  5. Paging(Gradually loading information) 
  6. Databinding 
  7. Navigation 
  8. WorkManager

각각의 라이브러리의 특징은 다음과 같습니다.

1. Lifecycles

Lifecycles는 각 UI의 생명주기를 관리합니다.

 

다음과 같이 크게 두 종류로 구성되어 있습니다.

Lifecycle Owner

Lifecycle 객체를 통해 다른 곳에서 해당 화면의 생명주기를 모니터링 할 수 있는데 자신의 생명주기를 담은 Lifecycle 객체가 Lifecycle Owner입니다.

 

Lifecycle Observer

생명주기를 Wrapping한 Lifecycle Owner 객체를 통해 화면 밖에서도 모니터링이 가능하지만, 생명주기에 따른 동작은 여전히 화면에서만 정의할 수 있습니다. 화면 밖에서도 생명주기에 따른 동작을 정의하기 위해서는 원하는 클래스에 LifecycleObserver 인터페이스를 구현하고 넘겨받은 Lifecycle Owner객체에 구현한 LifecycleObserver를 등록해야 합니다. Lifecycle Observer를 구현한 클래스는 onResume()등의 생명주기 메소드를 정의할 수 있습니다. 이 메소드들은 등록한 Lifecycle Owner가 해당 생명주기 상태가 되면 자동으로 수행되면서, 객체가 화면과 동일한 생명주기를 가진 것처럼 행동합니다.

 

2. LiveData

LiveData는 Observable 형태로 사용하며, 안드로이드 Lifecycle에 따라 데이터를 관리합니다. Activity, Fragment의 라이프 사이클을 따르기에 활동에 대한 처리를 알아서 관리해줍니다.

Android 공식문서에서는 다음과 같은 장점을 확인할 수 있습니다.

  • LiveData는 observable 패턴을 사용하기에 데이터의 변화를 구독한 곳으로 통지하고, 업데이트 한다.
  • 메모리 누수 없는 사용을 보장한다.
  • Lifecycle에 따라 LiveData의 이벤트를 제어한다.
  • 항상 최신 데이터를 유지한다.
  • 기기 회전이 일어나도 최신데이터를 처리할 수 있도록 도와준다. (AAC-ViewModel과 함께 사용시)
  • LiveData의 확장을 지원한다.

 

3. ViewModel

수명주기를 고려하여 UI관련 데이터를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면전환과 같이 구성을 변경할 때도 데이터를 보존할 수 있습니다.

  • AAC ViewModel이 데이터의 보존이 가능한 이유로는 ViewModel이 Activity의 경우 LifecycleEventObserver()로 Fragment에서는 FragmentStateManager로 View의 Lifecycle을 관찰하다 View가 종료되었을 때 Clear()를 하기때문에 종료가 되지 전까지 데이터가 보존되는 것입니다.

 

4. Room

SQLite 개체 매핑 라이브러리 입니다. Room을 사용하여 사용구 코드를 피하고 SQLite 테이블 데이터를 자바 객체로 쉽게 변환할 수 있습니다. Room은 SQLite 문의 컴파일 시간 확인을 제공하며 RxJavam, Flowable, LiveData, Observable을 반환할 수 있습니다.


 

안드로이드 매니페스트(AndroidManifest)의 역할은 무엇일까

안드로이드 매니페스트 파일은 무엇일까? 앱 구성 요소(Activity, Broadcast, Service, Provider)를 정의한 파일 앱이 요구하는 모든 권한을 식별 앱이 요구하는 최소 API을 선언 앱에서 요구하는 하드웨어

android-developer.tistory.com

 

안드로이드 MVVM 아키텍처란 무엇인가 필요성과 그 배경

안드로이드 MVVM 아키텍처 MVC vs MVP vs MVVM 비교 MVVM의 탄생 이유 및 필요성 MVVM 구현 방법 MVC : View와 Controller를 Activity, Fragment에서 담당 MVC 패턴의 경우 그림과 같이 View와 Controller가 연결되어 있습

android-developer.tistory.com

 

안드로이드 WorkManager는 왜 필요하고 어디서 쓰면될까?

안드로이드 코틀린 WorkManager는 어디서 사용하고 어떻게 사용하면될까? WorkManager는 왜 필요한가? 다른 백그라운드 처리들과의 차이 WorkManager는 어디에 사용하면될까? WorkManager는 어떻게 사용할 수

android-developer.tistory.com

 

리사이클러뷰의 생명주기 분석 및 메모릭의 원인

리사이클러뷰의 라이프 사이클 (화면에 보여지기까지의 순서) onAttachedToRecyclerView - 리사이클러뷰를 화면에 붙임 onCreateViewHolder - 홀더를 생성 onBindViewHolder - 홀더와 뷰를 바인딩 onViewAttachedToWindow

android-developer.tistory.com

 

Navigation을 사용한 화면 이동 시 라이프사이클 변화

Jetpack의 Navigation을 사용하여 화면 이동을 했을 때 Activity, Fragment가 정확히 어떤 타이밍에 어떻게 lifecycle이 순환하는지 확인한다 HTML 삽입 미리보기할 수 없는 소스 필요한 종속 항목 선언 https://d

android-developer.tistory.com

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글