DisposableEffect & Pembersihan
Daftarkan dan lepaskan resource dengan aman.
DisposableEffect & Pembersihan 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.
Kapan Anda Harus Melakukan Pembersihan
Beberapa penyiapan memerlukan pembongkaran yang sesuai: mendaftarkan listener, membuka sensor, atau mengamati siklus hidup. Untuk itu, gunakan DisposableEffect.
Penyiapan dan onDispose
DisposableEffect menjalankan kode penyiapan dan harus diakhiri dengan blok onDispose. Blok tersebut dijalankan saat efek keluar atau kuncinya berubah. 🧹
DisposableEffect(Unit) {
sensor.start()
onDispose { sensor.stop() }
}onDispose Wajib Ada
Setiap DisposableEffect harus mengembalikan onDispose sebagai pernyataan terakhirnya. Kompilator memastikan hal ini agar Anda tidak pernah lupa melepaskan sumber daya.
Kunci Bekerja Seperti Sebelumnya
Sama seperti LaunchedEffect, perubahan pada key membongkar efek lama (dengan menjalankan onDispose) dan menyiapkan efek baru dengan nilai yang baru.
DisposableEffect(roomId) {
chat.join(roomId)
onDispose { chat.leave(roomId) }
}Mendaftarkan dan Membatalkan Pendaftaran
Penggunaan klasiknya adalah callback atau penerima siaran: lakukan register saat penyiapan dan batalkan pendaftarannya di dalam onDispose untuk mencegah kebocoran.
DisposableEffect(Unit) {
val cb = Listener()
api.add(cb)
onDispose { api.remove(cb) }
}Mengamati Siklus Hidup
Anda dapat menambahkan LifecycleObserver saat penyiapan dan menghapusnya saat pembuangan. Dengan demikian, logika siklus hidup tetap berada di satu Composable.
DisposableEffect(lifecycleOwner) {
lifecycle.addObserver(obs)
onDispose { lifecycle.removeObserver(obs) }
}Mengapa Bukan LaunchedEffect
LaunchedEffect membatalkan coroutine-nya, tetapi tidak dapat menjalankan pembersihan sembarang. Saat Anda memerlukan langkah pembatalan yang sepadan, gunakan DisposableEffect.
Tanpa Fungsi Suspend di Dalamnya
Blok DisposableEffect bukan coroutine, jadi Anda tidak dapat memanggil fungsi suspend secara langsung di sini. Gunakan untuk penyiapan dan pembongkaran biasa.
Pembersihan Berjalan Sebelum Dimulai Ulang
Jika kuncinya berubah, onDispose dijalankan sebelum penyiapan baru. Sumber daya lama dilepaskan terlebih dahulu sehingga Anda tidak pernah mendaftarkan sesuatu dua kali.
Keluar dari Layar Memicu Pembersihan
Saat Composable benar-benar keluar dari composition, onDispose dijalankan untuk terakhir kalinya. Jaminan inilah yang mencegah kebocoran sumber daya.
Contoh Langganan Sensor
Mulai mendengarkan saat penyiapan, simpan pegangannya, lalu hentikan di onDispose. Efek ini menyelaraskan masa hidup sumber daya dengan Composable.
DisposableEffect(Unit) {
val sub = location.subscribe()
onDispose { sub.cancel() }
}Pemeriksaan Singkat
Fokuslah pada hal yang membuat DisposableEffect unik.
Ringkasan: DisposableEffect
Bagus sekali! DisposableEffect memasangkan penyiapan dengan onDispose yang wajib ada. Efek ini menjalankan pembersihan saat kunci berubah atau Composable keluar, sehingga sumber daya tidak bocor. 🧹
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 “DisposableEffect & Pembersihan” gratis?
Ya — teks lengkap “DisposableEffect & Pembersihan” 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 “DisposableEffect & Pembersihan”?
Daftarkan dan lepaskan resource 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 3 dari 4.
Berapa lama pelajaran “DisposableEffect & Pembersihan” 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
- LaunchedEffect untuk Coroutine
- rememberCoroutineScope untuk Event
- DisposableEffect & Pembersihan
- derivedStateOf & snapshotFlow