[kotlin] 안드로이드 뷰모델을 사용해 앱의 컴포넌트 간 데이터 전달하기

안드로이드 앱을 개발하다 보면 여러 화면이나 컴포넌트 간에 데이터를 전달해야 하는 경우가 있습니다. 안드로이드에서는 이를 처리하기 위해 뷰모델(ViewModel)을 활용할 수 있습니다. 뷰모델은 화면 관련 데이터를 저장하고 관리하며, 뷰-모델-라이브데이터 패턴을 통해 데이터를 관찰하고 자동으로 업데이트될 수 있도록 지원합니다.

뷰모델이란?

안드로이드 앱의 뷰모델은 화면 회전, 앱이 백그라운드로 이동하는 등의 상황에서도 데이터를 보존하고 관리하는데 사용됩니다. 뷰모델을 사용하면 화면에 표시되는 데이터를 안전하게 유지할 수 있으며, 액티비티나 프래그먼트와 같은 앱의 컴포넌트들 간에도 데이터를 전달할 수 있습니다.

뷰모델의 활용

안드로이드에서 뷰모델을 사용하려면 다음과 같은 단계를 따릅니다.

  1. 의존성 추가: 앱 수준의 build.gradle 파일에 라이브러리 의존성을 추가합니다.
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0"
  1. 뷰모델 생성: ViewModel 클래스의 서브클래스를 생성해야 합니다. 이 클래스는 뷰와 데이터 처리를 위한 로직을 구현합니다.
import androidx.lifecycle.ViewModel

class MyViewModel : ViewModel() {
    // 뷰모델에 필요한 데이터 및 메서드 정의
}
  1. 관찰 가능한 데이터 선언: 뷰모델 내에서 라이브데이터(LiveData)뮤터블라이브데이터(MutableLiveData)를 사용하여 관찰 가능한 데이터를 선언합니다.
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class MyViewModel : ViewModel() {
    val data = MutableLiveData<String>()
    
    // 데이터 업데이트 메서드
    fun updateData(newData: String) {
        data.value = newData
    }
}
  1. 뷰모델과 뷰 바인딩: 액티비티나 프래그먼트에서 뷰모델을 생성하고 데이터를 관찰합니다.
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this, { newData ->
    // 데이터 업데이트 시 처리 로직
})

이렇게 뷰모델을 활용하면 안드로이드 앱의 컴포넌트 간에 데이터를 안전하고 효율적으로 전달할 수 있습니다. 뷰모델을 활용하면 데이터의 보존과 화면 간의 데이터 전달이 간편해지며, 안정적인 앱을 구축할 수 있습니다.

결론

안드로이드 앱에서 컴포넌트 간 데이터 전달을 위해 뷰모델을 적절히 활용하면 앱의 안정성과 사용자 경험을 개선할 수 있습니다. 뷰모델을 사용하여 데이터 관리와 전달을 효율적으로 처리함으로써, 안드로이드 앱의 품질을 향상시킬 수 있습니다.

References