안드로이드 앱을 개발하다 보면 화면 회전이나 액티비티의 상태 변화 등으로 앱이 리셋되는 상황을 다뤄야 할 때가 있습니다. 이러한 문제를 해결하기 위해 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 사이트에서 확인할 수 있습니다.