Jetpack Compose Academy · Pelajaran

Panggilan suspend dalam ViewModel

Dapatkan data di luar utas utama.

Pelajaran 3 daripada 413 langkah

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.users

Pembatalan 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.

Percuma untuk bermula

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

  1. Mentakrifkan Antara Muka API Retrofit
  2. Menghuraikan JSON dengan Moshi
  3. Panggilan suspend dalam ViewModel
  4. UI Pemuatan, Berjaya & Ralat
← Kembali ke Jetpack Compose Academy