티스토리 뷰

android

[android] Android Jetpack : ViewModel

tbMaster 2020. 6. 10. 17:31
반응형

ViewModel : UI components 위한 데이터를 제공하고 변경된 configuration 에 대해서 데이터가 유지되도록 하는 객체

 

즉, Activity Instance가 rotation에 의해서 재생성되면서 UI data는 모두 소멸되게 된다. 이러한 문제를 해결하기 위해 UI 데이터를 Activity에서 관리하는 것이 아니라 ViewModel에서 관리하도록 해야 한다.

 

Activity는 모든 UI 상호작용을 처리하고 데이터를 로딩하고, UI component 들을 그리는 등 많은 작업을 처리해야 한다. 

모든 클래스는 각자의 역할이 단일화되어 있어야 한다.

"Single Responsibility Principle : Every class should have a single respnsibility" 

그렇기 때문에 ViewModel을 이용하여 관심사를 분리하도록 해야 한다.

[Android Jetpack: ViewModel 에 대한 영상 중 각 클래스에 대한 Single Responsibility 설명 화면 캡처]

* ViewModel 이용시 주의사항

절대 !! ViewModel 에는 Context를 저장하지 않도록 한다. ViewModel에 Context를 저장하게 되면, Activity Instance가 소멸되더라도 계속해서 ViewModel은 소멸된 Activity Instance를 잡고 있기 때문에 Memory Leak이 발생한다.

만약 ApplicationContext가 필요할 경우, AndroidViewModel을 이용하도록 한다.

 

ViewModel, onSaveInstanceState의 차이점 

ViewModel onSaveInstanceState
Survive configuration changes  Survives configuration changes and process death
Hold lots of data
( Activity UI를 위한 모든 data를 저장할 수 있으며, Activity에서 UI data에 대한 reload를 따로 설정하지 않음 )
Hold small amount of data
( Activity에서 data를 reload 해야 함 )
  Requires serialization
반응형

'android' 카테고리의 다른 글

[android] RxJava - Single  (0) 2020.06.18
[android] Serializable vs Parcelable ( + reflection)  (0) 2020.06.15
[android] build.gradle의 속성 정리  (0) 2020.06.01
[android] CustomView  (0) 2020.06.01
[android] MVVM 디자인 패턴 - AAC  (0) 2020.05.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함