MainActivity에서 SecondActivity로 데이터가 이동할 때 SecondViewModel의 SecondActivity로의 의존성 해결 #138
YiBeomSeok
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
MainActivity에서 SecondActivity로 데이터가 이동할 때 SecondViewModel의 SecondActivity로의 의존성 해결
조건
startActivity(secondActivityIntent)
가 실행됩니다.보통 UserData를 Intent로 담아 SecondAcitivy에서도 사용할 수 있도록 전해주는게 일반적인데, 이 UserData를 ViewModel도 사용해야 한다면 조금 어렵습니다.
ViewModel이 이 UserData를 다루기 위해 SecondActivity에게 UserData를 요청하는 순간 ViewModel이 View에 의존하게 되는 것이기 때문입니다.
이러한 상황을 해결하기 위한 방법들을 제시합니다.
1. Repository를 이용한 데이터 공유
레포지토리에 공유되는 데이터 소스를 만드는 것입니다. 예를 들어 MainViewModel은 UserDataRepository에게 UserData를 요청합니다. 이 때 UserDataRepository를 UserData를 반환함과 동시에 데이터를 보관하도록 만듭니다. 예시 코드는 다음과 같습니다.
init{ }
범위에서userDataRepository.getUserId()
를 호출하고Log.d()
로 확인해 봅니다.init{ }
범위에서userDataRepository.getUserId()
를 호출하고Log.d()
로 확인해 봅니다.2. Bundle을 사용하는 등 초기화를 위한 intent 활용은 예외적으로 허용하는 방법
MainActivity에서 SecondAcitivy로의 데이터 전달이 초기화하는 시점에 있을 경우, viewModel이 초기화되는 순간에만 intent 사용을 허용하는 것입니다. 이렇게 하는 것은 실제로 자주 허용되는 방식이라고는 하는데 저의 경우 아직 테스트 코드를 작성해본 적이 없어 큰 단점을 느끼진 못했습니다.
3. LiveData를 사용하는 방법
LiveData를 사용한 해결 방법은 이해하기 쉬운 방법을 찾게 된다면 업데이트 하도록 하겠습니다.
Beta Was this translation helpful? Give feedback.
All reactions