Android development sering berurusan dengan pekerjaan asynchronous, seperti memanggil API, membaca database, atau menjalankan tugas berat di background.
Kalau dikerjakan langsung di main thread, aplikasi bisa lag atau bahkan ANR (Application Not Responding).
Nah, di sinilah Kotlin Coroutines jadi solusi.
Apa itu Coroutines?
Coroutines adalah fitur di Kotlin untuk mengelola operasi asynchronous dan concurrent dengan cara yang lebih sederhana dibandingkan thread biasa.
Daripada pakai callback hell atau RxJava yang cukup kompleks, Coroutines memungkinkan kita menulis kode asynchronous dengan gaya yang mirip kode synchronous.
Mengapa Harus Menggunakan Coroutines?
Lebih sederhana – tidak perlu callback berlapis.
Ringan – bisa menjalankan ribuan coroutine tanpa membebani sistem.
Terintegrasi dengan Android Jetpack (Room, ViewModel, LiveData, dll).
Mendukung Structured Concurrency – lifecycle coroutine lebih aman dan terkontrol.
Konsep Dasar Coroutines
Beberapa konsep penting yang harus dipahami:
CoroutineScope
Tempat di mana coroutine berjalan. Contoh:GlobalScope,viewModelScope.suspend function
Fungsi khusus yang bisa ditunda (suspend) dan dilanjutkan tanpa memblokir thread.Dispatcher
Menentukan thread mana yang dipakai coroutine:Dispatchers.Main→ Main thread (UI)Dispatchers.IO→ Operasi I/O (network, database, file)Dispatchers.Default→ CPU intensive (hitung matematis, parsing)
Job & Deferred
Job→ merepresentasikan coroutine yang bisa dibatalkan.Deferred→ coroutine yang mengembalikan nilai (miripFuture/Promise).
Cara Menggunakan Coroutines di Android
1. Tambahkan Dependency
Di build.gradle (app):
2. Contoh Penggunaan Sederhana
Menjalankan operasi background tanpa mengganggu UI:
Output di logcat:
3. Contoh dengan ViewModel
Coroutines sering dipakai dengan viewModelScope supaya otomatis berhenti saat ViewModel dihancurkan.
Structured Concurrency
Coroutine di Android biasanya jalan dalam scope tertentu:
lifecycleScope→ terikat dengan lifecycle Activity/Fragment.viewModelScope→ terikat dengan ViewModel.
Ini memastikan coroutine berhenti otomatis saat UI sudah tidak aktif, sehingga lebih aman dari memory leak.
Kesimpulan
Coroutines mempermudah penulisan kode asynchronous di Android.
Gunakan Dispatcher yang sesuai (
Main,IO,Default).Manfaatkan
lifecycleScopeatauviewModelScopeagar coroutine aman terhadap lifecycle.Cocok digunakan untuk API call, akses database, dan operasi berat.
Pages
Links
