모바일 개발 · 중급
Android 아키텍처 컴포넌트 중 ViewModel의 역할과 장점은 무엇이며, Activity 또는 Fragment의 생명주기와 어떻게 독립적으로 데이터를 유지할 수 있는지 설명해주세요.
힌트 · ViewModel은 구성 변경(예: 화면 회전) 시에도 데이터를 유지하며, UI 컨트롤러와 데이터를 분리하여 생명주기 종속성 문제를 해결합니다.
UI 데이터생명주기데이터 유지Configuration ChangeUI 로직 분리
모범답안
ViewModel은 Android 아키텍처 컴포넌트 중 하나로, UI에 필요한 데이터를 저장하고 관리하는 역할을 합니다. Activity나 Fragment와 같은 UI 컨트롤러의 생명주기와 독립적으로 동작하여, 화면 회전과 같은 구성 변경 시에도 데이터를 유지할 수 있다는 장점이 있습니다.
ViewModel을 사용하면 UI 컨트롤러는 데이터 표시와 사용자 인터랙션 처리라는 본연의 역할에 집중할 수 있게 됩니다. 데이터 로딩이나 복잡한 비즈니스 로직은 ViewModel에서 처리하므로 UI 코드가 간결해지고 테스트하기 쉬워집니다.
Activity나 Fragment가 소멸되고 재 생성되더라도 ViewModel은 유지되므로, UI 데이터가 초기화되지 않습니다. 이는 ViewModelProvider를 통해 ViewModel을 생성하고 관리함으로써 가능합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Android / Kotlin 면접 질문
- Kotlin의 Null Safety 기능은 무엇이며, 이를 위해 사용되는 '?' (nullable type)와 '!!' (non-null assertion operator)의 역할과 사용 시 주의점에 대해 설명해주세요.
- Activity의 onPause()와 onStop() 메서드는 어떤 차이가 있으며, 각각 어떤 상황에서 호출되고 어떤 작업을 수행하는 것이 적절한가요?
- Fragment의 onCreateView()와 onViewCreated() 메서드의 호출 시점과 역할의 차이점을 설명하고, 각각 어떤 종류의 작업을 수행하는 것이 권장되는지 예시와 함께 설명해 주세요.
- Kotlin Flow 기반의 StateFlow와 Android 아키텍처 컴포넌트의 LiveData는 각각 어떤 특징을 가지고 있으며, UI 상태 관리에 있어 어떤 상황에서 어떤 것을 사용하는 것이 더 효과적인지 비교하여 설명해주세요.
- 코틀린 코루틴에서 Dispatchers.Main, Dispatchers.IO, Dispatchers.Default의 역할과 각각 어떤 종류의 작업에 적합한지 구체적인 사용 사례와 함께 설명해주세요.
- Android에서 Hilt(또는 Dagger Hilt)를 사용하여 의존성 주입(DI)을 구현할 때, @Inject, @Module, @Provides 어노테이션의 역할과 사용 방법에 대해 설명하고, 빌드 타임에 어떻게 의존성 그래프가 생성되는지 간략하게 설명해 주세요.