0Pricing
Android Academy · Pelajaran

Mengapa Menggunakan ViewModel?

Hadapi perubahan konfigurasi dengan baik.

Mengapa Menggunakan ViewModel? adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Apa Itu ViewModel?

ViewModel adalah komponen arsitektur Android yang dirancang untuk menyimpan dan mengelola data terkait UI dengan memperhatikan siklus hidup.

Komponen ini bertahan melewati perubahan konfigurasi seperti rotasi layar, sehingga data Anda tidak dihancurkan dan dibuat ulang setiap kali sistem membangun ulang UI.

Masalah Perubahan Konfigurasi

Saat Anda memutar perangkat, Android menghancurkan dan membuat ulang Activity. State apa pun yang disimpan di dalam Activity atau Composable akan hilang.

  • Penghitung kembali ke nol.
  • Daftar yang telah dimuat menghilang.
  • Permintaan jaringan mungkin dimulai ulang.

ViewModel mengatasi masalah ini dengan berada di luar siklus hidup instance Activity.

Cara ViewModel Bertahan

Kerangka kerja mempertahankan instance ViewModel yang sama selama proses pembuatan ulang. Saat Activity baru dibuat, Activity tersebut menerima ViewModel yang sudah ada, bukan ViewModel baru.

class CounterViewModel : ViewModel() {
    var count = 0
        private set

    fun increment() {
        count++
    }
}

Mendapatkan ViewModel di Compose

Di Jetpack Compose, Anda biasanya mengambil ViewModel dengan pembantu viewModel(). Pembantu ini mengembalikan instance yang sama untuk pemilik siklus hidup tersebut.

import androidx.lifecycle.viewmodel.compose.viewModel

@Composable
fun CounterScreen(
    vm: CounterViewModel = viewModel()
) {
    Text("Count: " + vm.count)
}

Pemisahan Tanggung Jawab

ViewModel mendorong pemisahan yang rapi:

  • Lapisan UI (Composable/Activity) hanya merender state dan meneruskan peristiwa.
  • ViewModel menyimpan state dan logika bisnis.

Dengan demikian, UI menjadi lebih sederhana dan logika lebih mudah diuji.

Cakupan dan Kepemilikan ViewModel

ViewModel memiliki cakupan pada ViewModelStoreOwner, yang biasanya berupa Activity, Fragment, atau entri tumpukan navigasi.

ViewModel akan dihapus secara otomatis saat pemiliknya benar-benar dihancurkan, misalnya ketika pengguna menyelesaikan Activity dengan menekan tombol kembali.

Callback onCleared

Saat ViewModel akhirnya dihancurkan, kerangka kerja memanggil onCleared(). Gunakan callback ini untuk melepaskan sumber daya yang Anda buka.

class MyViewModel : ViewModel() {
    override fun onCleared() {
        super.onCleared()
        // cancel jobs, close listeners
    }
}

Hal yang TIDAK Boleh Disimpan di ViewModel

Jangan pernah menyimpan referensi ke View, Activity, atau Context apa pun yang terikat pada UI di dalam ViewModel. Karena ViewModel hidup lebih lama daripada Activity, tindakan ini menyebabkan kebocoran memori.

Jika Anda memerlukan konteks aplikasi, gunakan AndroidViewModel.

AndroidViewModel untuk Konteks Aplikasi

Saat Anda benar-benar memerlukan Context, perluas AndroidViewModel, yang menyediakan konteks aplikasi berumur panjang dengan aman.

class PrefsViewModel(
    app: Application
) : AndroidViewModel(app) {
    private val context = getApplication<Application>()
}

Meneruskan Argumen Konstruktor

Untuk menyisipkan dependensi, seperti repositori, ke dalam ViewModel, gunakan ViewModelFactory atau kerangka kerja DI seperti Hilt. Hilt akan dibahas nanti dalam jalur pembelajaran ini.

class UserViewModel(
    private val repo: UserRepository
) : ViewModel() {
    // repo provided via a factory or Hilt
}

Mengapa ViewModel Penting

ViewModel merupakan salah satu dasar arsitektur Android modern. ViewModel memberikan Anda:

  • Ketahanan terhadap perubahan konfigurasi.
  • Pemisahan yang rapi antara UI dan logika.
  • Pengelolaan state yang dapat diprediksi dan diuji.

Pemeriksaan Singkat

Uji pemahaman Anda tentang alasan ViewModel digunakan.

Rangkuman

Anda telah mempelajari:

  • ViewModel menyimpan state UI dan bertahan melewati perubahan konfigurasi.
  • ViewModel tidak boleh menyimpan referensi View atau Activity agar tidak terjadi kebocoran.
  • ViewModel memiliki cakupan pada pemilik tertentu dan dihapus melalui onCleared().
  • AndroidViewModel menyediakan Context aplikasi dengan aman.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengapa Menggunakan ViewModel?” gratis?

Ya — teks lengkap “Mengapa Menggunakan ViewModel?” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengapa Menggunakan ViewModel?”?

Hadapi perubahan konfigurasi dengan baik. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mengapa Menggunakan ViewModel?” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Menggunakan ViewModel?
  2. Menyediakan State dari ViewModel
  3. Siklus Hidup Android
  4. collectAsStateWithLifecycle
← Kembali ke Android Academy