[kotlin] 안드로이드 뷰모델에서 데이터 공유하기

안드로이드 앱을 개발하다 보면 여러 화면 간에 데이터를 공유해야 하는 경우가 있습니다. 안드로이드에서는 뷰모델(ViewModel)을 활용하여 화면 간 데이터를 공유할 수 있습니다.

뷰모델(ViewModel)이란?

뷰모델(ViewModel)안드로이드 아키텍처 컴포넌트(Architecture Components) 중 하나로, 앱의 데이터를 저장하고 관리하며 화면 회전과 같은 구성 변경 시 데이터를 유지할 수 있는 기능을 제공합니다. 또한, 뷰모델을 사용하면 화면 간에 데이터를 공유할 수 있어 매우 유용합니다.

뷰모델에서 데이터 공유하기

뷰모델은 뷰모델 공유범위를 설정하여 데이터를 공유할 수 있습니다. 예를 들어, ActivityFragment에 속한 뷰모델을 사용하여 해당 화면들 사이에서 데이터를 공유할 수 있습니다.

아래는 뷰모델 공유범위 설정을 위한 예시 코드입니다.

class SharedViewModel : ViewModel() {
    val sharedData = MutableLiveData<String>()
}

class FirstFragment : Fragment() {
    private val viewModel: SharedViewModel by viewModels({ requireActivity() })
  
    fun updateData(data: String) {
        viewModel.sharedData.value = data
    }
}

class SecondFragment : Fragment() {
    private val viewModel: SharedViewModel by activityViewModels()

    fun getData() {
        val data = viewModel.sharedData.value
        // 데이터 활용
    }
}

위의 코드에서 SharedViewModel 클래스를 통해 sharedData를 정의하고, FirstFragmentSecondFragment에서 이를 공유합니다. FirstFragment에서 updateData 함수를 통해 데이터를 업데이트하고, SecondFragment에서 getData 함수를 통해 데이터를 이용할 수 있습니다.

마무리

안드로이드 뷰모델을 사용하여 화면 간 데이터를 공유하면서 안정적이고 효율적인 앱을 개발할 수 있습니다. 뷰모델은 안드로이드의 아키텍처 컴포넌트 중 하나로, 데이터 공유 및 관리를 손쉽게 할 수 있도록 도와줍니다.

뷰모델을 활용하여 데이터를 공유할 때에는 각각의 상황에 맞게 뷰모델 공유범위를 설정하여 안정적인 앱을 개발할 수 있도록 주의해야 합니다.

참고 자료