Jetpack Compose Academy · Pelajaran

DisposableEffect & Pembersihan

Daftarkan dan lepaskan resource dengan aman.

Pelajaran 3 dari 413 langkah

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

Gratis untuk memulai

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

  1. LaunchedEffect untuk Coroutine
  2. rememberCoroutineScope untuk Event
  3. DisposableEffect & Pembersihan
  4. derivedStateOf & snapshotFlow
← Kembali ke Jetpack Compose Academy