MVVM 디자인 패턴에 대해서 공부하던중 ViewModel에 대해서 공부가 필요해 ViewModel에 대해서 공부해보았다.
ViewModel이란?
ViewModel은 안드로이드 개발자 문서에서는 아래와 같이 적혀져 있다.
이말이 무슨 말이냐면
기존의 액티비티에 데이터들은 화면이 로테이션 되거나 하면 액티비티의 자원을 버리고 다시 받아오는데
ViewModel을 사용하면 액티비티에 남아 있는 데이터들을 저장하고 있어 화면이 로테이션 되거나 하더라고 데이터를
저장하고 있어 다시 받아오는 일이 없다.
따라서 이부분 덕분에 ViewModel을 사용하면 리소스를 아낄수 있고 ViewModel에서 데이터 처리를 맡아서
View로부터 데이터를 받아오는 액티비티(컨트롤러)의 부담을 줄일수도 있다.
이처럼 ViewModel은 데이터를 저장할수 있는 부분이기때문에 생명주기도 일반 액티비티와는 다르나.
아래 사진을 보면 액티비티와 ViewModel의 생명주기를 그림 그림이다.
이렇게 ViewModel은 생성할때 ViewModelProvider로부터 전달 받은것의 생명주기로 지정된다.
그래서 전달받은 액티비티가 아예 FINISH 되지 않는 이상은 계속해서 데이터가 남아 있다.
ViewModel 사용법
1. dependencies 추가
ViewModel도 외부 라이브러리이기 때문에 gradle에 dependencies를 추가해줘야 한다.
dependencies는 아래와 같다.
//ViewModel 사용에 필요한 변수
def lifecycle_version = "2.4.0-alpha02"
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
위 dependencies를 추가해주면 되는데 lifecycle이랑 ViewModel은 알겠지만 LiveData가 뭔지 궁금해할수는데
LiveData를 모르시는 분들은 아래링크를 통해 보고 오시면 될것 같다.
https://wpioneer.tistory.com/151
이처럼 ViewModel을 사용하려면 LiveData는 세트처럼 같이 dependencies를 추가해줘야 한다.
(ViewModel과 LiveData는 세트와 같은 느낌)
2. ViewModel 클래스 생성
public class MainActivityViewModel extends ViewModel {
//비즈니스 로직 추가
}
3. ViewModel을 사용하는 액티비티에서 ViewModel 생성
//ViewModel을 생성하는 부분
mMainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
4. 해당 액티비티에서 ViewModel 메소드 호출
//ViewModel의 init() 호출
mMainActivityViewModel.init();
'코딩일기 > android studio' 카테고리의 다른 글
안드로이드 독학 22일차 : MVVM 패턴에 대하여(Java) (1) | 2021.07.13 |
---|---|
안드로이드 독학 22일차 : LiveData와 MutuableLiveData 설명 및 사용법 (0) | 2021.07.13 |
안드로이드 독학 21일차 : Recycler View 사용법 (0) | 2021.07.12 |
안드로이드 독학 20일차 : androidx란? (0) | 2021.07.06 |
안드로이드 독학 20일 차 : Gradle 이란? (0) | 2021.07.06 |