[kotlin] ViewModel 계층의 역할과 코틀린에서의 구현 방법

안드로이드 앱을 개발하다 보면, 화면 회전, 앱이 백그라운드로 이동하는 등의 상황에서 액티비티나 프래그먼트의 상태를 올바르게 유지하는 것이 중요합니다. 이러한 문제를 해결하기 위해 Android Jetpack에 포함된 ViewModel 클래스가 있습니다.

ViewModel의 역할

ViewModelUI 관련 데이터의 저장과 관리를 주요 역할로 하며, 화면 회전 등의 상황에서 데이터를 유지하고, UI 컨트롤러인 액티비티나 프래그먼트가 데이터를 다시 가져오지 않도록 도와줍니다.

코틀린에서의 ViewModel 구현 방법

코틀린 언어를 사용하여 Android 앱을 개발하는 경우, ViewModel을 구현하는 방법은 다음과 같습니다.

  1. ViewModel 클래스 생성: 안드로이드 Jetpack 라이브러리에는 ViewModel 클래스가 포함되어 있으므로, 이를 상속받아 CustomViewModel 클래스를 작성합니다.

     import androidx.lifecycle.ViewModel
        
     class CustomViewModel : ViewModel() {
         // ViewModel에 관련된 코드를 작성합니다.
     }
    
  2. ViewModel과 UI 컨트롤러 연결: ViewModel에는 LiveDataObservable과 같은 데이터 홀더를 사용하여 데이터를 저장하고, UI 컨트롤러인 액티비티나 프래그먼트와 연결합니다.

     import androidx.lifecycle.LiveData
     import androidx.lifecycle.MutableLiveData
     import androidx.lifecycle.ViewModel
        
     class CustomViewModel : ViewModel() {
         private val _data = MutableLiveData<String>()
         val data: LiveData<String>
             get() = _data
        
         fun updateData(newData: String) {
             _data.value = newData
         }
     }
    
  3. UI 컨트롤러에서 ViewModel 사용: UI 컨트롤러에서는 ViewModelProvider를 사용하여 액티비티나 프래그먼트와 ViewModel을 연결하고, ViewModel의 데이터를 observe하여 화면에 반영합니다.

     import androidx.lifecycle.ViewModelProvider
        
     class MainActivity : AppCompatActivity() {
         private lateinit var viewModel: CustomViewModel
            
         override fun onCreate(savedInstanceState: Bundle?) {
             super.onCreate(savedInstanceState)
             setContentView(R.layout.activity_main)
                
             viewModel = ViewModelProvider(this).get(CustomViewModel::class.java)
             viewModel.data.observe(this, { newData ->
                 // observe한 데이터를 UI에 반영하는 코드를 작성합니다.
             })
         }
     }
    

ViewModel은 Android 앱의 아키텍처를 개선하고, UI 코딩을 단순화하는데 큰 도움을 주는 중요한 요소입니다. 올바르게 사용하면서, 앱의 안정성과 성능을 향상시킬 수 있습니다.

결론

ViewModel은 안드로이드 앱의 화면 관련 데이터를 저장하고 관리하여 화면 회전 등의 상황에서 안정적인 동작을 보장합니다. 코틀린에서 ViewModel을 구현하는 방법을 이해하고, 적절히 활용하여 안드로이드 앱의 아키텍처를 개선할 수 있습니다.

참고 자료:

  1. Android Developers - ViewModel