Android

MVVM 패턴을 꼭 적용하자! (Activity 생명주기, Bundle)

Dean83 2023. 1. 13. 11:23

C#에서의 MVVM 패턴은 사용성의 큰 필요성을 느끼지 못했다. 

 

MVVM을 쓰는 가장 큰 이유가 UI작업과 개발작업을 분리한다는 것이었는데, 한국은 보통 둘 다 개발자가 하므로...
분리 필요성을 느끼지 못했다. 

 

 

그러나 안드로이드는 다르다. 안드로이드 개발하면서 느끼는 점은, C#이 얼마나 잘 만든 언어이고 시스템인지 뼈저리게

느끼고 있다. 

 

안드로이드의 가장 큰 빌런은 리사이클러뷰. C#으로 따지면 리스트에 변수 연결할때 한줄이면 끝나는데, 

이놈은 Adapter 클래스 만들고 ViewHolder 만들고, 필요에 따라 Decoration 클래스도 만들고...암튼 별짓거리를 다 한다;;

 

그러나 이것보다 가장 큰 문제점은!!

라이프사이클 정책에 따라서 Activity가 다시 생성될때 UI 상태등을 저장-복구 해줘야 한다는 것이다. 

그리고 이것은 bundle에 담겨 있게 된다. MVVM 패턴에서는 다행스럽게도 이걸 신경 쓸 필요가 없다. 

 

하지만 MVVM이 아닌 MVC라면....? 반드시 MVVM으로 구현하는걸 추천한다. 

 

MVVM에서는 신경쓸 필요가 없는것이, ViewModel은 Activity와 다르게 생명주기가 매우 길다. 

따라서 휴대폰의 모드 (예 : 가로 ->세로) 변경시 Activity는 재생성 되는 반면 ViewModel은 데이터를 그대로 유지한다. 

 

모든 기능 및 UI를 ViewModel에 구현하면 귀찮은 일이 없어진다. 

 

MVVM을 안드로이드에서 적용하기 위해선 Koin이 필수이다. 추후에 쓸 여력이 되면 사용법을 적을 예정이다.