[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와 비동기 작업을 분리하고, 앱의 성능과 사용자 경험을 향상시킬 수 있습니다.


참고문헌: