MVVM도 알고 ViewModel도 알지만 정확히 왜 쓰이게 되었는지 어떻게 탄생하게 되었는지는 알 수 없어 정리해 보았다.
ViewModel의 역할
ViewModel은 안드로이드 컴포넌트의 생명 주기와 UI 상태를 분리하여 보다 안정적이고, 메모리 누수가 없으며, 재사용 가능한 코드를 만들 수 있도록 해준다.
ViewModel을 통해 생명 주기 문제를 해결하였고, 앱의 복잡성을 줄이면서 데이터 관리를 예전보다 쉽게 해준다
ViewModel의 UI 데이터의 생명 주기 관리
ViewModel은 Activity나 Fragment의 생명 주기와 독립적으로 동작하며, 이러한 UI 컴포넌트가 회전, 파괴, 재생성되더라도 데이터를 유지하여, 데이터를 다시 불러오거나 작업을 다시 재시작 할 필요가 없다.
ViewModel의 생명 주기와 비즈니스 로직의 분리
ViewModel은 UI 컴포넌트와 비즈니스 로직을 분리하여, UI와는 상관없이 비즈니스 로직을 수행할 수 있다.
이를 통해 코드의 재사용성과 테스트 용이성을 확장시킬 수 있다.
ViewModel의 메모리 누수 방지
ViewMoedl은 Activity나 Fragment가 파괴된 이후에도 메모리에 남지 않기 때문에, 비동기 작업이나 네트워크 요청 등과 같은 작업에서 발생할 수 있는 메모리 누수를 방지한다.
(메모리에는 남지 않은데, 데이터는 어찌 유지하고 있는것인지 잘 모르겠다)
ViewModel의 데이터 저장 및 유지
ViewModel은 구성 변경이 일어나더라도 데이터를 유지할 수 있으며, 직렬화가 가능하지 않은 복잡한 데이터를 포함한 비즈니스 로직도 손쉽게 처리할 수 있다.
마무리
ViewModel은 안드로이드 아키텍처 컴포넌트 중 하나로 UI 데이터의 생명 주기 관리와 관련된 문제를 해결하기 위해 만들어 졌다.
훌륭하다 훌륭해
'[# 2]…My DevelopStory' 카테고리의 다른 글
[Android] 코루틴 Blocking와 Non-Blocking의 차이 (0) | 2024.09.25 |
---|---|
[Android Compose] Icon onClick Event (0) | 2024.08.29 |
[Android Compose] BasicTextField Decimal formattng ~ 천단위 쉼표 추가 (0) | 2024.08.28 |
[Android Compose] BasicTextField을 이용한 커스텀 사투기 (2) | 2024.08.27 |
[Android Compose] Scaffold Content padding parameter it is not use (0) | 2024.08.26 |