Event Sekali Jalan dengan Channel
Kirim event navigasi dan toast dengan aman.
Event Sekali Jalan dengan Channel adalah pelajaran Jetpack Compose 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 Jetpack Compose Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.
State Bukan Event
Beberapa hal seharusnya terjadi tepat satu kali, seperti navigasi atau menampilkan notifikasi singkat. Memodelkannya sebagai state menyebabkan hal tersebut diputar ulang pada setiap rotasi.
Masalah Pemutaran Ulang
Jika Anda menyimpan pesan snackbar di StateFlow, perubahan konfigurasi akan membacanya lagi dan pesan tersebut muncul kembali secara tidak terduga.
Kenali Channel
Channel adalah pipa hot tempat setiap nilai dikirim tepat kepada satu penerima lalu dikonsumsi, tanpa pernah diputar ulang.
private val _events = Channel<UiEvent>()Send dibandingkan Emit
Anda memasukkan data ke Channel dengan send, yaitu pemanggilan yang dapat ditangguhkan. Event tersebut menunggu di penyangga sampai ada sesuatu yang siap menerimanya.
_events.send(UiEvent.NavigateBack)Tampilkan sebagai Flow
Ubah channel menjadi aliran untuk UI dengan receiveAsFlow, yang memungkinkan tepat satu pengumpul mengonsumsi setiap event.
val events = _events.receiveAsFlow()Dikonsumsi Sekali, Selamanya Hilang
Setelah pengumpul mengambil sebuah event dari Channel, event tersebut hilang. Rotasi berikutnya tidak dapat membacanya lagi, sehingga tidak terjadi pemutaran ulang yang tidak disengaja.
Modelkan Event sebagai Tipe
Definisikan tipe UiEvent tertutup agar setiap tindakan sekali jalan, seperti navigasi atau pesan, dinyatakan secara jelas dan lengkap.
sealed interface UiEvent {
data class ShowToast(val msg: String) : UiEvent
}Kumpulkan Event di Compose
Kumpulkan flow event di dalam LaunchedEffect agar terikat pada siklus hidup layar dan setiap penangan event dijalankan satu kali.
LaunchedEffect(Unit) {
events.collect { handle(it) }
}Pilih Kebijakan Penyangga
Channel bawaan menangguhkan pengirim jika tidak ada yang menerima. Anda dapat memberinya penyangga agar pengiriman tidak pernah menghambat logika Anda.
Channel<UiEvent>(Channel.BUFFERED)SharedFlow sebagai Alternatif
SharedFlow dengan replay nol juga dapat membawa event, tetapi Channel menjamin pengiriman tunggal meskipun tidak ada pengumpul yang aktif.
Pisahkan State dan Event
Pola yang rapi: satu StateFlow untuk state layar dan satu Channel untuk event yang dijalankan sekali. Keduanya tidak akan tertukar lagi.
Pemeriksaan Singkat
Tentukan apa yang sesuai untuk tindakan sekali jalan.
Ringkasan: Event Sekali Jalan
Luar biasa! Channel mengirimkan event sekali jalan seperti navigasi dan notifikasi tepat satu kali, serta memisahkannya dari state layar yang dapat diputar ulang. 🎯
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 “Event Sekali Jalan dengan Channel” gratis?
Ya — teks lengkap “Event Sekali Jalan dengan Channel” 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 “Event Sekali Jalan dengan Channel”?
Kirim event navigasi dan toast dengan aman. 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 4 dari 4.
Berapa lama pelajaran “Event Sekali Jalan dengan Channel” 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
- StateFlow vs SharedFlow
- Memetakan & Menggabungkan Flow
- stateIn & WhileSubscribed
- Event Sekali Jalan dengan Channel