연습: ViewModel을 Dessert Clicker에 추가

1. 시작하기 전에

소개

Dessert Clicker는 인라인 상태 및 데이터로 작동합니다. 이 연습에서는 MainActivity에서 인라인 상태, 데이터, 로직을 삭제한 다음 그것을 ViewModel로 이동해 보겠습니다.

앱 로직을 뷰에서 ViewModel로 추상화하는 것은 Android 개발의 최신 방법입니다. 이 방법에는 다음과 같은 이점이 있습니다.

  • 다른 개발자가 코드를 더 쉽게 읽을 수 있습니다.
  • 코드를 더 쉽게 테스트할 수 있습니다.
  • 여러 개발자가 다른 개발자의 작업을 방해하지 않고 한 앱에서 동시에 작업할 수 있습니다.

솔루션 코드는 마지막에 제공되지만 연습 문제를 해결한 후 답을 확인하는 것이 좋습니다. 이 솔루션은 앱을 구현하는 한 가지 방법으로 생각하세요.

기본 요건

필요한 항목

  • 인터넷 액세스가 가능하고 Android 스튜디오가 설치된 컴퓨터
  • Dessert Clicker 앱의 솔루션 코드

빌드할 항목

이 연습 문제에서는 데이터와 앱 로직을 처리하는 ViewModel를 추가하여 Dessert Clicker 앱의 아키텍처를 개선해 봅니다.

연습 문제는 섹션으로 나눠지며 섹션에서는 개별적으로 다음 단계를 실행합니다.

  • 필요한 종속 항목을 업데이트하고 추가합니다.
  • ViewModel 클래스를 만듭니다.

2. 시작 코드 다운로드하기

  1. Android 스튜디오에서 basic-android-kotlin-compose-training-dessert-clicker 폴더를 엽니다.
  2. Android 스튜디오에서 Dessert Clicker 앱 코드를 엽니다.

3. 종속 항목 설정

  1. 프로젝트 build.gradle 파일에 다음 변수를 추가합니다.
buildscript {
   ext {
       ...
       lifecycle_version = '2.5.1'
   }
}
  1. app/build.gradle 파일에 다음 종속 항목을 추가합니다.
dependencies {
    ...implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
}

4. UI 상태 클래스 만들기

현재 MainActivityDessertClickerApp() 컴포저블에는 UI를 구동하는 데이터와 상태가 포함되어 있습니다.

UI에 필요한 모든 데이터를 포함하는 데이터 클래스를 만듭니다. 이 클래스 내의 데이터는 DessertClickerApp() 컴포저블이 현재 관리하는 데이터를 대체합니다.

5. ViewModel 만들기

Jetpack ViewModel 구성요소를 사용하여 ViewModel 클래스를 만듭니다. ViewModel을 사용하여 UI 상태를 관리합니다.

6. 앱 로직과 데이터를 ViewModel에 재배치

MainActivity에서 ViewModel로 로직을 재배치하고, 생성한 UI 상태 클래스를 사용하여 UI 상태 데이터에 액세스할 수 있도록 합니다. MainActivity에서 모든 데이터 및 상태 관리 로직을 삭제합니다.

혼자서 이 작업을 진행해 보세요. 필요한 경우 Compose의 ViewModel 및 상태 Codelab을 참고하세요.

7. ViewModel 호출

ViewModel이 제공하는 데이터와 메서드를 사용하여 MainActivity에서 UI를 구동합니다.

8. 솔루션 코드