Architecture, Pattern
[Android] MVVM - ViewModels AntiPatterns
슝슝55
2022. 8. 2. 19:00
#ViewModel Antipattens
대표적인 Android ViewModel Antipattern 2가지
[Antipattern]
1. Android Framework 종속성을 가지는 클래스를 사용
- (Don’t let ViewModels (and Presenters) know about Android framework classes)
- 테스트나, 메모리 누수나, 모듈성을 위해서 일반적으로 android.* 클래스들을 ViewModel에서 사용하지 말란 뜻( but 예외도 있음 android.arch.* 같은.. )
2. ViewModel에서 View 를 Reference
- ( Avoid references to Views in ViewModels.)
- View와 ViewModel이 아래 그림과 같이 생명주기가 다르므로 ViewModel이 이미 destroy되거나 재생성되기 이전 Acticity를 참조할 가능성이 있기 때문. 이는 심각한 Memory leak이나 Crash를 발생시킴.
- 예를 들어 ViewModel이 네트워크 요청을 했는데 오래 걸리는 경우에 그사이 Activity가 재생성 된다면, 요청이 끝난 시점에 ViewModel에서 가지고 있던 View를 참조하면..! 문제가 생길 수 있다는 것 (옜날 View니까)
이 외에 LiveData와 함께 사용 되는 다양한 ViewModel 패턴은 아래를 참고
[참고] ViewModels and LiveData: Patterns + AntiPatterns
https://medium.com/androiddevelopers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54