그동안에 안드로이드 개발을 할때 하나의 액티비티에 모든 코드를 넣어서 개발을 하곤 했다. 이렇게 하면 비효율적이며 정말 나만 알아볼 수 있는 혹은 나도 알아보기 힘든 코드가 됨을 느끼고 유지보수가 힘들어지는 것을 몸소 체험하고
드디어 디자인 패턴을 적용해보고자 한다. MVVM 패턴의 개념과 실습을 하며 궁극적으로 졸프에 활용할 예정이다.
우선 앞선 포스팅에서 한차례 정리한 적이 있다.
2023.07.21 - [Frontend/Kotlin] - [안드로이드] 코틀린 아키텍처 패턴
[안드로이드] 코틀린 아키텍처 패턴
1. 디자인 패턴이란? 디자인 패턴이란 프로그램 개발 시에 자주 부딪히는 문제 상황에 대한 일반적이고 재사용 가능한 추상화된 해결책을 말한다. 즉 반복적으로 일어나는 문제들을 어떤 방법으
victoria9981.tistory.com
MVVM 패턴
- View: view는 사용자가 보는 UI 화면이다. 이 view는 데이터가 필요하기에 ViewModel이 가진 data를 관찰한다. 이때 View는 UI업데이트에만 집중할 수 있다. ViewModel을 관측하고 있기에 변화에 능동적이며 LiveData를 이용해 DB를 관찰하고 자동으로 UI를 갱신한다. 따라서 생명주기로부터 안전해 메모리 누수를 방지할 수 있다는 장점이 있다. 데이터 변화를 감지해야 하기 때문에 observer를 가지고 있다.
왜냐하면, ViewModel을 통해 데이터를 참조하기에 Activity나 Fragment가 생명주기를 따르지 않는다. ViewModel이 데이터를 홀드하고 있기 때문이다.
- ViewModel: 앱 회전, 종료에도 사라지지 않는 UI를 위해 데이터를 홀드하고 있다. Activity가 Destroy 되었다가 Create 되어도 종료되지 않는다.
- Model: 데이터 API 포함 클래스, 앱에 필요한 데이터, 내장 DB나 웹 서버 등에서 데이터를 가져오는 곳이다. 즉 앱의 데이터를 관리한다.
자꾸 언급되는 LiveData는 무엇일까?
LiveData: View가 ViewModel 관찰시 관찰가능한 데이터 홀더 클래스이다. View에서 ViewModel의 LiveData를 관찰하게 되면 데이터 변경시 내부적으로 자동으로 알려준다.
이 LiveData는 Activity와 Fragment 생명주기를 인지하고 있다. Activity가 화면위에 활성화 되어 있을때만 UI를 변경하고 기능을 작동한다. Destroy 상태에서는 동작하지 않아 이것으로써 메모리 누수를 방지한다.
AAC
구글에서는 개발자들이 MVVM 패턴을 쉽게 구축하게 하기위해 AAC(Android Architecture Component)를 제공한다.
dl AAC는 유지보수성이 뛰어나게 만들도록 도움을 주는 라이브러리 모음이다. 위에 언급한 LiveData, ViewModel 모두 이에 속하는 라이브러리이다.
위에 언급한 View가 초록색이고 ViewModel이 파란색, Model이 노란색에 해당한다.
DataBinding- MVVM 패턴을 공부하던 중 필수적으로 언급되어 정리를 해보았다.
https://victoria9981.tistory.com/22
About DataBinding
데이터바인딩이란? 데이터 바인딩은 UI 레이아웃의 뷰를 앱 코드에 저장된 데이터와 연결하는 방식을 제공한다. LiveData와 함께 사용될때 활용도가 높다. 이점은 다음과 같다. - findViewById를 사용
victoria9981.tistory.com
이제 예제를 참고해서 직접 MVVM 패턴을 실습해 보도록 하겠다.
'Frontend > Kotlin' 카테고리의 다른 글
MVVM 패턴 적용기(2) (0) | 2023.08.15 |
---|---|
Coroutine 개념 (0) | 2023.08.04 |
About DataBinding (0) | 2023.07.29 |
[안드로이드] 코틀린 아키텍처 패턴 (0) | 2023.07.21 |
Unit 7 (0) | 2023.01.22 |