[kotlin] ViewModels 사용법

안드로이드 앱을 개발하다 보면 화면 회전이나 액티비티의 상태 변화 등으로 앱이 리셋되는 상황을 다뤄야 할 때가 있습니다. 이러한 문제를 해결하기 위해 ViewModels를 사용할 수 있습니다.

ViewModel이란 무엇인가요?

ViewModel은 앱의 UI 데이터를 관리하고 저장하는 데 사용되는 클래스입니다. 이를 통해 화면 회전이나 상태 변화와 같은 시나리오에서도 데이터를 유지할 수 있습니다. 또한, ViewModels을 사용하면 UI 컴포넌트와 데이터 관련 로직을 분리하여 앱을 더 쉽게 관리할 수 있습니다.

다음은 ViewModel을 사용하는 방법에 대한 Kotlin 코드 예제입니다.

import androidx.lifecycle.ViewModel

class MyViewModel : ViewModel() {
    // 데이터 관련 로직 및 상태 저장
}

ViewModel 사용 방법

ViewModel을 사용하려면 ViewModel 클래스를 확장하는 새로운 클래스를 만들어야 합니다. 이 클래스는 ViewModel의 상태를 유지하고 관리하는 데 사용됩니다.

import androidx.lifecycle.ViewModel
import androidx.lifecycle.MutableLiveData

class MyViewModel : ViewModel() {
    var myData: MutableLiveData<String> = MutableLiveData()
    
    fun updateData(newData: String) {
        myData.value = newData
    }
}

위의 예제에서는 ViewModel 클래스를 상속하여 새로운 클래스를 만들고, 그 안에 UI 관련 데이터를 저장하는 MutableLiveData를 사용하는 방법을 보여줍니다.

ViewModel 을 사용하는 액티비티에서는 다음과 같이 ViewModel 을 초기화하고 값에 접근할 수 있습니다.

import androidx.lifecycle.ViewModelProviders

class MyActivity : AppCompatActivity() {
    private lateinit var myViewModel: MyViewModel
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        myViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
    }
}

ViewModelProviders 클래스를 사용하여 ViewModel 인스턴스를 가져올 수 있으며, 필요에 따라 해당 ViewModel의 데이터를 업데이트하거나 가져와서 사용할 수 있습니다.

위에서 설명한 것처럼 ViewModels를 사용하면 데이터 관련 코드를 UI 관련 코드와 분리하여 앱을 더 관리하기 쉽게 만들 수 있습니다.

마지막으로, 안드로이드의 ViewModel에 대한 보다 상세한 정보는 Android Developers 사이트에서 확인할 수 있습니다.