#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
'Architecture, Pattern' 카테고리의 다른 글
[Pattern] 책임 연쇄 패턴 (Chain-of-responsibility pattern) (0) | 2021.11.10 |
---|---|
[Pattern] MVC/MVP/MVVM (0) | 2021.10.10 |