Panggilan suspend dalam ViewModel
Dapatkan data di luar utas utama.
Panggilan suspend dalam ViewModel ialah pelajaran Jetpack Compose Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Jetpack Compose Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Jetpack Compose Academy merangkumi sejumlah 4 pelajaran.
Jangan Sekat Jalur Utama
Panggilan rangkaian mengambil masa, dan melakukannya pada jalur UI akan membekukan aplikasi anda. Sebaliknya, anda mengalihkan kerja itu daripada jalur utama.
Jadikan Titik Akhir sebagai suspend
Tandakan fungsi Retrofit anda dengan kata kunci suspend. Kini fungsi itu mengembalikan hasil yang telah dihuraikan secara langsung dan boleh berhenti seketika tanpa menyekat. ⏸️
@GET("users")
suspend fun getUsers(): List<User>ViewModel Memiliki Logik
Pengambilan data hendaklah dilakukan dalam ViewModel, bukannya Composable. Ia kekal selepas putaran dan memastikan kod UI anda hanya mengendalikan paparan.
class UserViewModel : ViewModel() {
// network logic lives here
}Lancarkan dengan viewModelScope
Fungsi suspend memerlukan korutin. viewModelScope menyediakan korutin yang dibatalkan secara automatik apabila ViewModel dikosongkan.
viewModelScope.launch {
val users = api.getUsers()
}Simpan Hasil dalam Keadaan
Selepas panggilan dikembalikan, simpan data ke dalam sifat keadaan supaya Compose boleh memerhatikannya dan melukis semula skrin.
var users by mutableStateOf<List<User>>(emptyList())Bungkus dalam try-catch
Rangkaian boleh gagal, jadi lindungi panggilan dengan try-catch. Pengecualian yang tidak dikendalikan dalam korutin boleh merosakkan seluruh aplikasi anda.
try {
users = api.getUsers()
} catch (e: Exception) {
// handle failure
}Ambil Semasa Init
Cetuskan pemuatan pertama dalam blok init ViewModel supaya data mula tiba sebaik sahaja skrin dicipta.
init {
loadUsers()
}Kekalkannya dalam Fungsi
Bungkus pengambilan data dalam fungsi bernama seperti loadUsers. Ini memudahkannya dipanggil semula untuk percubaan semula atau muat semula tarik-ke-bawah.
fun loadUsers() = viewModelScope.launch {
users = api.getUsers()
}Dispatchers Mengendalikan Jalur
Retrofit sudah menjalankan permintaan pada penghantar latar, jadi biasanya anda tidak perlu menukar jalur menggunakan Dispatchers.IO sendiri.
Kumpulkan Keadaan dalam Compose
Dalam Composable anda, baca keadaan ViewModel. Oleh sebab keadaan itu boleh diperhatikan, Compose melakukan penggubahan semula sebaik sahaja data baharu tiba.
val users = viewModel.usersPembatalan adalah Automatik
Jika pengguna meninggalkan skrin dan ViewModel dikosongkan, viewModelScope membatalkan panggilan yang sedang berjalan, jadi tiada kerja dibazirkan untuk skrin yang sudah tidak digunakan.
Semakan Pantas
Skop manakah yang membatalkan korutinnya secara automatik apabila ViewModel dikosongkan?
Imbas Kembali: Memanggil daripada ViewModel
Anda menjadikan titik akhir sebagai suspend, melancarkannya dalam viewModelScope, menyimpan hasil dalam keadaan dan mengendalikan ralat. Seterusnya, anda akan memaparkan keadaan memuatkan, berjaya dan ralat.
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Panggilan suspend dalam ViewModel” percuma?
Ya — teks penuh “Panggilan suspend dalam ViewModel” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Jetpack Compose Academy, tingkat taraf kepada CoddyKit PRO. Kursus Jetpack Compose Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Panggilan suspend dalam ViewModel”?
Dapatkan data di luar utas utama. Anda berlatih Jetpack Compose Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Jetpack Compose Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Jetpack Compose Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Panggilan suspend dalam ViewModel” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Jetpack Compose Academy ini?
Ya. Setiap pelajaran Jetpack Compose Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mentakrifkan Antara Muka API Retrofit
- Menghuraikan JSON dengan Moshi
- Panggilan suspend dalam ViewModel
- UI Pemuatan, Berjaya & Ralat