Android Academy · Pelajaran

Menginjeksi ke ViewModel

Gunakan @HiltViewModel untuk injeksi yang rapi.

Pelajaran 4 dari 413 langkah

Menginjeksi ke ViewModel adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Menginjeksi ViewModel dengan Hilt

ViewModel bersifat khusus: kerangka kerja membuat instance-nya melalui factory. Hilt terintegrasi dengan mekanisme ini melalui anotasi @HiltViewModel.

Memberi Anotasi pada ViewModel

Beri tanda pada ViewModel dengan @HiltViewModel dan beri anotasi @Inject pada konstruktornya.

import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class UserViewModel @Inject constructor(
    private val repo: UserRepository
) : ViewModel()

Yang Disediakan Hilt

Hilt mencari setiap parameter konstruktor di dalam graf dependensi. Selama UserRepository telah diikat (melalui modul atau injeksi konstruktor), Hilt akan memasoknya secara otomatis.

Mengambilnya di Compose

Gunakan hiltViewModel() di dalam Composable untuk memperoleh ViewModel yang disediakan Hilt.

import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun UserScreen(
    vm: UserViewModel = hiltViewModel()
) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
}

Host Harus Menjadi Titik Masuk

Agar hiltViewModel() berfungsi, Activity yang menjadi host harus diberi anotasi @AndroidEntryPoint. Dengan begitu, Compose terhubung ke graf Hilt.

@AndroidEntryPoint
class MainActivity : ComponentActivity()

Menginjeksi Dependensi Lain

Anda dapat menginjeksi apa pun yang ada di dalam graf: repositori, use case, bahkan basis data Room yang disediakan oleh modul.

@HiltViewModel
class HomeViewModel @Inject constructor(
    private val getUsers: GetUsersUseCase,
    private val analytics: Analytics
) : ViewModel()

Menginjeksi Context Aplikasi

Memerlukan context? Injeksi application context yang telah diberi kualifikasi dengan @ApplicationContext.

@HiltViewModel
class PrefsViewModel @Inject constructor(
    @ApplicationContext private val context: Context
) : ViewModel()

SavedStateHandle

Hilt secara otomatis menyediakan SavedStateHandle, yang membawa argumen navigasi dan tetap bertahan setelah proses dihentikan.

@HiltViewModel
class DetailViewModel @Inject constructor(
    handle: SavedStateHandle
) : ViewModel() {
    val id: Int = handle.get<Int>("id") ?: 0
}

Penghubungan Lengkap

Dari awal hingga akhir: Modul menyediakan repositori → Hilt menginjeksi repositori tersebut ke ViewModel → Compose memperoleh ViewModel melalui hiltViewModel(). Tidak ada factory manual di mana pun.

Tanpa Kode Factory Manual

Tanpa Hilt, Anda harus menulis ViewModelProvider.Factory khusus untuk setiap ViewModel yang memerlukan argumen konstruktor. @HiltViewModel menghilangkan semua kebutuhan tersebut.

Menyatukan Seluruh Materi

Sekarang Anda memiliki tumpukan modern yang lengkap: ViewModel + status yang menyadari siklus hidup, persistensi Room, coroutine dan Flow, semuanya terhubung dengan DI Hilt.

Pemeriksaan Singkat

Uji pemahaman Anda tentang injeksi ViewModel.

Rangkuman

Anda telah mempelajari:

  • Konstruktor @HiltViewModel + @Inject memungkinkan Hilt membuat ViewModel.
  • Dapatkan ViewModel di Compose dengan hiltViewModel() di dalam host @AndroidEntryPoint.
  • Injeksi repositori, @ApplicationContext, dan SavedStateHandle.
  • Factory manual tidak diperlukan.
Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
36
Pelajaran
152

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menginjeksi ke ViewModel” gratis?

Ya — teks lengkap “Menginjeksi ke 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 “Menginjeksi ke ViewModel”?

Gunakan @HiltViewModel untuk injeksi yang rapi. 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 4 dari 4.

Berapa lama pelajaran “Menginjeksi ke 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 Injeksi Dependensi?
  2. Menyiapkan Hilt
  3. Modul dan Penyedia
  4. Menginjeksi ke ViewModel
← Kembali ke Android Academy