Praktik: Menambahkan ViewModel ke Dessert Clicker

1. Sebelum memulai

Pengantar

Dessert Clicker berfungsi dengan status dan data inline. Dalam latihan ini, Anda akan menghapus status, data, dan logika inline dari MainActivity dan memindahkannya ke ViewModel.

Memisahkan logika aplikasi dari tampilan dan menjadi ViewModel adalah praktik modern untuk pengembangan Android. Praktik ini memberikan manfaat berikut:

  • Kode menjadi lebih mudah dibaca oleh developer lain.
  • Kode menjadi lebih mudah diuji.
  • Beberapa developer dapat bekerja secara bersamaan di aplikasi tanpa mengganggu tugas developer lain.

Kode solusi tersedia di bagian akhir, tetapi cobalah untuk menyelesaikan latihan sebelum Anda memeriksa jawabannya. Pertimbangkan solusi tersebut sebagai salah satu cara untuk menerapkan aplikasi.

Prasyarat

Yang akan Anda butuhkan

  • Komputer yang dilengkapi akses internet dan Android Studio
  • Kode solusi untuk aplikasi Dessert Clicker

Yang akan Anda build

Dalam soal latihan ini, Anda akan meningkatkan arsitektur aplikasi Dessert Clicker dengan menambahkan ViewModel untuk menangani data dan logika aplikasi.

Soal latihan dibagi menjadi beberapa bagian, dan Anda akan menyelesaikan langkah-langkah berikut satu per satu:

  • Update dan tambahkan dependensi yang diperlukan.
  • Buat class ViewModel.

2. Mendownload kode awal

  1. Di Android Studio, buka folder basic-android-kotlin-compose-training-dessert-clicker.
  2. Buka kode aplikasi Dessert Clicker di Android Studio.

3. Menyiapkan dependensi

  1. Tambahkan variabel berikut ke file build.gradle project Anda:
buildscript {
   ext {
       ...
       lifecycle_version = '2.5.1'
   }
}
  1. Tambahkan dependensi berikut ke file app/build.gradle:
dependencies {
    ...implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
}

4. Membuat class status UI

Saat ini, composable DessertClickerApp() di MainActivity berisi data dan status yang menjalankan UI.

Buat class data yang menyimpan semua data yang diperlukan untuk UI. Data dalam class ini menggantikan data yang saat ini dikelola oleh composable DessertClickerApp().

5. Membuat ViewModel

Buat class ViewModel menggunakan komponen ViewModel Jetpack. Anda menggunakan ViewModel untuk mengelola status UI.

6. Memindahkan logika aplikasi dan data ke ViewModel

Pindahkan logika dari MainActivity ke ViewModel dan buat data status UI dapat diakses menggunakan class status UI yang Anda buat. Hapus semua data dan logika pengelolaan status dari MainActivity.

Coba lakukan tugas ini sendiri. Jika perlu, lihat codelab ViewModel dan Status dalam Compose sebagai panduan.

7. Memanggil ViewModel

Gunakan data dan metode yang disediakan ViewModel untuk menjalankan UI di MainActivity.

8. Kode solusi