[kotlin] 뷰모델을 활용한 안드로이드 앱의 비동기 처리
안드로이드 앱을 개발하다 보면 네트워크 호출, 파일 다운로드, 데이터베이스 작업과 같은 비동기 작업을 수행해야 하는 경우가 많습니다. 이러한 비동기 작업을 효율적으로 관리하기 위해 뷰모델(ViewModel) 을 활용할 수 있습니다.
뷰모델이란?
뷰모델은 안드로이드 아키텍처 컴포넌트 중 하나로, 액티비티 또는 프래그먼트와 같은 UI 컨트롤러와 데이터 사이의 통신을 도와주는 클래스입니다. 뷰모델을 사용하면 UI 컨트롤러가 데이터 변경을 감지하고 적절히 반응할 수 있도록 도와줍니다.
뷰모델을 사용한 비동기 작업 처리
가장 일반적인 방법은 뷰모델 내에서 비동기 작업을 처리하고, 작업이 완료되면 그 결과를 UI 컨트롤러에 알리는 것입니다. 이를 위해 코루틴(Coroutine) 과 함께 사용하는 것이 좋은 방법입니다.
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String>
get() = _data
fun loadData() {
viewModelScope.launch {
try {
val result = fetchDataFromNetwork()
_data.value = result
} catch (e: Exception) {
// Handle error
}
}
}
private suspend fun fetchDataFromNetwork(): String {
// 네트워크에서 데이터 가져오기
}
}
위의 예제에서는 데이터를 로드하는 loadData
메서드 내에서 코루틴을 사용하여 네트워크에서 데이터를 가져오고, 그 결과를 _data
라이브데이터에 저장하는 것을 볼 수 있습니다.
결론
안드로이드 앱에서 비동기 작업을 처리할 때, 뷰모델과 코루틴을 함께 사용하는 것이 모범 사례입니다. 이를 통해 UI와 비동기 작업을 분리하고, 앱의 성능과 사용자 경험을 향상시킬 수 있습니다.
참고문헌: