[kotlin] 코틀린 안드로이드 MVVM 아키텍처에서의 네트워킹 처리 방법

안드로이드 앱에서 네트워킹은 중요한 부분입니다. MVVM 아키텍쳐를 사용하여 안드로이드 앱의 네트워킹을 어떻게 처리하는지 알아보겠습니다.

1. Retrofit 라이브러리 사용

Retrofit은 안드로이드 앱에서 네트워킹을 처리하기 위해 많이 사용되는 라이브러리 중 하나입니다. Retrofit은 강력한 HTTP 클라이언트 라이브러리로, RESTful 웹 서비스를 손쉽게 사용할 수 있도록 지원합니다.

// build.gradle 파일에 Retrofit 의존성 추가
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'

2. Repository 클래스 생성

MVVM 아키텍쳐에서 네트워킹은 Repository 클래스에서 처리됩니다. Repository는 데이터를 가져오는 역할을 합니다.

class UserRepository {
    private val retrofit = Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create())
        .build()

    private val userService = retrofit.create(UserService::class.java)

    suspend fun getUsers(): List<User> {
        return userService.getUsers()
    }
}

3. ViewModel 클래스 생성

ViewModel 클래스에서는 Repository를 사용하여 네트워킹을 처리합니다. ViewModel은 화면의 데이터를 관리하고 뷰와 모델 간의 통신을 중재합니다.

class UserViewModel(private val userRepository: UserRepository) : ViewModel() {
    private val _users = MutableLiveData<List<User>>()
    val users: LiveData<List<User>> = _users

    init {
        viewModelScope.launch {
            _users.value = userRepository.getUsers()
        }
    }
}

4. 뷰에 데이터 표시

마지막으로, 뷰에서 ViewModel을 사용하여 네트워킹 결과를 표시합니다.

class UserActivity : AppCompatActivity() {
    private val userViewModel: UserViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_user)

        userViewModel.users.observe(this, Observer { users ->
            // 네트워킹 결과를 화면에 표시
            showUsers(users)
        })
    }
}

MVVM 아키텍쳐를 사용하여 안드로이드 앱의 네트워킹을 처리하는 방법에 대해 알아보았습니다. Retrofit을 사용하여 네트워킹을 처리하고, Repository 및 ViewModel을 사용하여 비동기적으로 데이터를 가져오고 화면에 표시하는 방법을 살펴보았습니다. 네트워킹 처리시에는 항상 백그라운드 스레드에서 처리되어야 함을 주의해야 합니다.

참고 자료: Retrofit 공식 문서, 안드로이드 공식 문서