Dalam pengembangan aplikasi Android modern, pengelolaan data asynchronous dan aliran data yang terus berubah adalah hal yang sangat penting. Kotlin menghadirkan solusi elegan melalui Coroutines Flow, serta turunannya StateFlow dan SharedFlow, yang kini banyak digunakan menggantikan LiveData atau bahkan RxJava.
Artikel ini akan membahas:
Apa itu Flow, StateFlow, dan SharedFlow
Perbedaan dan kapan digunakan
Contoh implementasi sederhana di Android
1. Flow: Stream Data Asynchronous
Flow adalah API Kotlin Coroutines yang memungkinkan kita mengalirkan (emit) banyak data secara asynchronous dari waktu ke waktu.
Contoh Flow sederhana:
Menggunakan di Activity/Fragment:
๐ Kapan pakai Flow?
Saat ingin mengamati data yang terus berubah (stream) dari Room, API call berulang, sensor, dsb.
2. StateFlow: State yang Selalu Update
StateFlow adalah turunan Flow yang selalu menyimpan nilai terbaru (current state).
Konsepnya mirip dengan LiveData, tapi berbasis Coroutines.
Contoh StateFlow di ViewModel:
Collect di Activity:
๐ Kapan pakai StateFlow?
Saat ingin menyimpan state UI yang selalu ada nilai terakhir (contoh: jumlah item keranjang, status login, dsb).
3. SharedFlow: Event Broadcast
SharedFlow berbeda dengan StateFlow karena tidak menyimpan state terakhir, melainkan mengirim event ke banyak subscriber sekaligus.
Mirip dengan PublishSubject di RxJava.
Contoh SharedFlow di ViewModel:
Collect di Activity/Fragment:
๐ Kapan pakai SharedFlow?
Untuk event sekali jalan, misalnya navigasi, snackbar, toast, atau notifikasi.
Flow vs StateFlow vs SharedFlow
Fitur | Flow | StateFlow | SharedFlow |
|---|---|---|---|
Aliran data | โ Stream | โ Stream | โ Stream |
Menyimpan nilai terakhir | โ | โ (selalu ada) | โ |
Lifecycle aware | โ (butuh scope) | โ (butuh scope) | โ (butuh scope) |
Multi-subscriber | โ (cold) | โ | โ |
Cocok untuk | Data berkelanjutan | State UI | Event satu kali |
Kesimpulan
Flow โ cocok untuk data berkelanjutan (database, API streaming).
StateFlow โ cocok untuk state UI (menyimpan nilai terbaru).
SharedFlow โ cocok untuk event (navigasi, snackbar, toast).
Dengan memahami perbedaan ini, kamu bisa memilih stream API yang tepat untuk kebutuhan aplikasi Android-mu.
Pages
Links
