본문 바로가기
코딩일기/android studio

안드로이드 독학 22일차 : ViewModel 설명 및 사용법

by 욱파이어니어 2021. 7. 13.
728x90
반응형

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

 

안드로이드 독학 22일차 : LiveData와 MutuableLiveData 설명 및 사용법

LiveData는 ViewModel을 배우면서 배워야할거같아서 따로 알아보게 되었다. LiveData란? LiveData는  식별 가능한 데이터 홀더 클래스이다. 이게 무슨 말이냐면 LiveData는 무언가를 관찰하며 바뀌는게 있는

wpioneer.tistory.com

 

이처럼 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();

 

반응형