Pemanggilan suspend dalam ViewModel
Ambil data di luar thread utama.
Pemanggilan suspend dalam ViewModel adalah pelajaran Jetpack Compose Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Jetpack Compose Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.
Jangan Pernah Memblokir Thread Utama
Permintaan jaringan memerlukan waktu, dan menjalankannya di thread UI akan membekukan aplikasi. Sebagai gantinya, pindahkan pekerjaan tersebut dari thread utama.
Menjadikan Titik Akhir Suspend
Tandai fungsi Retrofit Anda dengan kata kunci suspend. Kini fungsi tersebut mengembalikan hasil yang telah diurai secara langsung dan dapat berhenti sementara tanpa memblokir. ⏸️
@GET("users")
suspend fun getUsers(): List<User>ViewModel Memiliki Logikanya
Pengambilan data seharusnya dilakukan di ViewModel, bukan di Composable. ViewModel bertahan saat rotasi dan menjaga kode UI tetap berfokus pada tampilan.
class UserViewModel : ViewModel() {
// network logic lives here
}Menjalankan dengan viewModelScope
Fungsi suspend memerlukan coroutine. viewModelScope menyediakannya dan membatalkannya secara otomatis saat ViewModel dibersihkan.
viewModelScope.launch {
val users = api.getUsers()
}Menyimpan Hasil dalam State
Setelah panggilan selesai, simpan data ke dalam properti state agar Compose dapat mengamatinya dan menggambar ulang layar.
var users by mutableStateOf<List<User>>(emptyList())Membungkusnya dalam try-catch
Jaringan dapat gagal, jadi lindungi panggilan dengan try-catch. Pengecualian yang tidak ditangani dalam coroutine dapat membuat seluruh aplikasi Anda berhenti.
try {
users = api.getUsers()
} catch (e: Exception) {
// handle failure
}Mengambil Data saat Inisialisasi
Picu pemuatan pertama di blok init ViewModel agar data mulai tiba segera setelah layar dibuat.
init {
loadUsers()
}Menyimpannya dalam Fungsi
Bungkus pengambilan data dalam fungsi bernama seperti loadUsers. Dengan begitu, fungsi tersebut mudah dipanggil lagi untuk mencoba ulang atau menyegarkan dengan gestur tarik.
fun loadUsers() = viewModelScope.launch {
users = api.getUsers()
}Dispatcher Menangani Threading
Retrofit sudah menjalankan permintaan di dispatcher latar belakang, jadi biasanya Anda tidak perlu mengganti thread sendiri menggunakan Dispatchers.IO.
Mengumpulkan State di Compose
Di Composable, baca state milik ViewModel. Karena dapat diamati, Compose akan langsung melakukan recomposes saat data baru tiba.
val users = viewModel.usersPembatalan Berlangsung Otomatis
Jika pengguna keluar dan ViewModel dibersihkan, viewModelScope membatalkan panggilan yang sedang berlangsung sehingga tidak ada pekerjaan yang terbuang untuk layar yang sudah tidak aktif.
Pemeriksaan Singkat
Scope mana yang secara otomatis membatalkan coroutine-nya saat ViewModel dibersihkan?
Ringkasan: Memanggil dari ViewModel
Anda menjadikan titik akhir sebagai suspend, menjalankannya dalam viewModelScope, menyimpan hasilnya di state, dan menangani error. Selanjutnya, Anda akan menampilkan state pemuatan, keberhasilan, dan error.
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
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pemanggilan suspend dalam ViewModel” gratis?
Ya — teks lengkap “Pemanggilan suspend dalam ViewModel” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Jetpack Compose Academy, upgrade ke CoddyKit PRO. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pemanggilan suspend dalam ViewModel”?
Ambil data di luar thread utama. Kamu berlatih Jetpack Compose 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 Jetpack Compose Academy?
Tidak diperlukan pengalaman sebelumnya. Jetpack Compose 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 3 dari 4.
Berapa lama pelajaran “Pemanggilan suspend dalam 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 Jetpack Compose Academy ini?
Ya. Setiap pelajaran Jetpack Compose 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
- Mendefinisikan Interface API Retrofit
- Mengurai JSON dengan Moshi
- Pemanggilan suspend dalam ViewModel
- UI Memuat, Berhasil & Error