Aug 19, 2025

Aug 19, 2025

Android

Android

5 min

5 min

Memahami Coroutines di Android untuk Pemula

Memahami Coroutines di Android untuk Pemula

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?

  1. Lebih sederhana – tidak perlu callback berlapis.

  2. Ringan – bisa menjalankan ribuan coroutine tanpa membebani sistem.

  3. Terintegrasi dengan Android Jetpack (Room, ViewModel, LiveData, dll).

  4. Mendukung Structured Concurrency – lifecycle coroutine lebih aman dan terkontrol.

Konsep Dasar Coroutines

Beberapa konsep penting yang harus dipahami:

  1. CoroutineScope
    Tempat di mana coroutine berjalan. Contoh: GlobalScope, viewModelScope.

  2. suspend function
    Fungsi khusus yang bisa ditunda (suspend) dan dilanjutkan tanpa memblokir thread.

  3. 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)

  4. Job & Deferred

    • Job → merepresentasikan coroutine yang bisa dibatalkan.

    • Deferred → coroutine yang mengembalikan nilai (mirip Future/Promise).

Cara Menggunakan Coroutines di Android

1. Tambahkan Dependency

Di build.gradle (app):

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"

2. Contoh Penggunaan Sederhana

Menjalankan operasi background tanpa mengganggu UI:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Menjalankan coroutine di lifecycleScope
        lifecycleScope.launch {
            Log.d("Coroutine", "Mulai di: ${Thread.currentThread().name}")

            val result = withContext(Dispatchers.IO) {
                // Simulasi kerja berat (misalnya fetch API)
                delay(2000)
                "Data berhasil diambil!"
            }

            Log.d("Coroutine", "Hasil: $result, Thread: ${Thread.currentThread().name}")
        }
    }
}

Output di logcat:

D/Coroutine: Mulai di: main
D/Coroutine: Hasil: Data berhasil diambil!, Thread: main

3. Contoh dengan ViewModel

Coroutines sering dipakai dengan viewModelScope supaya otomatis berhenti saat ViewModel dihancurkan.

class MyViewModel : ViewModel() {

    fun fetchData() {
        viewModelScope.launch {
            val data = withContext(Dispatchers.IO) {
                // simulasi fetch dari API
                delay(1000)
                "Ini data dari server"
            }
            Log.d("ViewModel", data)
        }
    }
}

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 lifecycleScope atau viewModelScope agar coroutine aman terhadap lifecycle.

  • Cocok digunakan untuk API call, akses database, dan operasi berat.

Create a free website with Framer, the website builder loved by startups, designers and agencies.