ViewModel

개발/Android

[안드로이드] ViewModel에서 context를 사용하는 방법

우리는 보통 ViewModel을 생성할 때 ViewModel()을 상속받아 사용한다. 그래서 일반적으로 ViewModel에서는 Context에 직접 접근하지 않는다. ViewModel의 주요 목적이 UI와 비즈니스 로직을 분리하기 위한 것이기 때문이다. 이를 통해서 UI의 생명주기에 영향을 받지 않고 독립적으로 데이터를 유지할 수 있게 된다. 하지만 특정 상황에서는 ViewModel에서 Context에 접근해야하는 경우가 발생하다. 이 때 생성자 파라미터로 받거나 객체를 생성해서 받는 것은 올바른 방법이 아니다. AndroidViewModel 클래스를 사용해서 해결이 가능한데, 이는 Application Context를 파라미터로 받고 이것을 통해 리소스나 시스템 서비스를 사용할 수 있게 된다. clas..

개발/트러블슈팅

[안드로이드] by viewModels() 종속성 추가

0. ktxAndroid Jetpack과 기타 Android 라이브러리에 포함된 Kotlin 확장 프로그램 세트이다. Jetpack, Android , 기타 API 등과 Kotlin을 사용하기 위해 사용한다. 1. by viewModels() 코틀린의 by는 위임(deligate) 패턴을 구현하는데에 사용되는 키워드이다. 그로 인해 ViewModelProvider를 사용하지 않아도 by viewModels 함수를 사용하여 viewModel을 지연 생성할 수 있다. 2. 종속성 추가 viewmodel 관련 ktx 종속성을 추가했는데도 by viewModels 함수가 제공되지 않아 당황한 사람들이 있을 것이다. viewmodel의 초기화를 위한 함수들은 Activity/Fragment에 포함되어 있어 그런 ..

개발/Android

[안드로이드] AAC ViewModel과 MVVM ViewModel

안드로이드 개발자라면 MVVM이 대세라는 말들과 그에 대한 여러 정보를 어렵지 않게 많이 접해봤을 것이다. 많은 기업들이 MVVM 패턴을 사용하고 있고, 여러 채용 공고들에도 아키텍처에 대한 이해나 MVVM 실무 경험 등이 푸함되어 있기 때문이다. 그래서 오히려 무지성으로 ViewModel에 대한 이해 없이 겉핥기식 MVVM 패턴을 사용하는 사람도 많아진 것 같다. 0. ViewModel이 왜 두가지로 나뉘게 되었는가 구글이 Jetpack을 내놓기 이전부터 개발자들은 MVVM 패턴을 적용하여 개발을 하고 있었다. 그러다 구글이 Jetpack을 내놓으면서 그 당시 개발자들에겐 낯익은 ViewModel도 포함되어 있어 다들 기존의 MVVM 구조에서 사용하던 ViewModel을 구글에서 다듬어 내놨으리라 기대..

개발/트러블슈팅

[안드로이드] ViewModelProvider gradle 오류

오늘 "아키텍처를 알아야 앱 개발이 보인다" 라는 책을 공부하던 중, 한가지 이슈에 직면했다. ViewModel 파트 실습중이였는데, gradle 설정을 완료하였음에도 ViewModel 생성을 위한 ViewModelProvider 클래스가 생성되지 않는 이슈였다. 수정을 거쳐도 이미 deprecated된 ViewModelProviders가 나오거나 아예 엉뚱한 HasDefaultViewModelProvideFactory 였나? 뭔가 하는 이상한 클래스가 나왔다. 아래 코드는 developers에서 제공하는 최신 버전의 gradle이다. dependencies { def lifecycle_version = "2.6.0-alpha01" def arch_version = "2.1.0" // ViewModel ..

최선의 최선
'ViewModel' 태그의 글 목록