0Pricing
Android Academy · Pelajaran

Mengamati Data dengan Flow

Tanggapi perubahan basis data secara reaktif.

Mengamati Data dengan Flow adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Pembacaan Basis Data Reaktif

Alih-alih melakukan kueri sekali, Room dapat mengembalikan Flow yang memancarkan nilai baru setiap kali data yang mendasarinya berubah. Antarmuka pengguna Anda diperbarui secara otomatis.

Mengembalikan Flow dari DAO

Deklarasikan tipe pengembalian sebagai Flow<...>. Perhatikan bahwa fungsi ini bukan fungsi suspend.

@Query("SELECT * FROM users ORDER BY name")
fun observeUsers(): Flow<List<User>>

Mengapa Bukan suspend di Sini

Fungsi suspend mengembalikan satu hasil lalu selesai. Flow adalah aliran yang terus berlangsung, jadi fungsi tersebut merupakan fungsi biasa yang mengembalikan objek aliran; Anda mengumpulkannya seiring waktu.

Cara Room Mengetahui Kapan Harus Memancarkan Ulang

Room melacak tabel mana yang disentuh oleh sebuah kueri. Saat penulisan apa pun memengaruhi tabel tersebut, Room menjalankan ulang kueri dan memancarkan hasil terbaru melalui Flow. Semua ini berlangsung otomatis.

Mengumpulkan dalam Coroutine

Anda mengumpulkan aliran di dalam coroutine, biasanya di ViewModel.

viewModelScope.launch {
    dao.observeUsers().collect { users ->
        _uiState.value = UiState(users)
    }
}

Memetakan Flow

Anda dapat mengubah aliran dengan operator seperti map sebelum mengeksposnya.

val names: Flow<List<String>> =
    dao.observeUsers().map { list ->
        list.map { it.name }
    }

Mengubahnya Menjadi StateFlow

Konversikan aliran DAO yang dingin menjadi StateFlow panas untuk antarmuka pengguna dengan stateIn.

val uiState = dao.observeUsers()
    .map { UiState(it) }
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

Mengumpulkan di Compose

Layar mengumpulkan status tersebut dengan memperhatikan siklus hidup, tepat seperti yang telah Anda pelajari sebelumnya.

@Composable
fun UsersScreen(vm: UserViewModel) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
    UserList(state.users)
}

Rangkaian Reaktif Lengkap

Menggabungkan semuanya:

  • Room memancarkan data saat terjadi perubahan.
  • ViewModel memetakan data menjadi status antarmuka pengguna melalui stateIn.
  • Compose mengumpulkannya dengan collectAsStateWithLifecycle.

Tulis ke DB dari mana saja, dan layar akan diperbarui sendiri.

Satu Sumber Kebenaran

Pola ini menjadikan basis data sebagai satu-satunya sumber kebenaran. Antarmuka pengguna tidak pernah menyimpan salinan yang kedaluwarsa; tampilannya selalu mencerminkan data yang benar-benar tersimpan.

Penulisan Memicu Pembaruan

Setiap penyisipan, pembaruan, atau penghapusan pada tabel yang dipantau akan memancarkan ulang aliran, sehingga Anda tidak perlu menyegarkan daftar secara manual setelah terjadi perubahan.

suspend fun addUser(u: User) = dao.insert(u)
// observeUsers() flow re-emits automatically

Pemeriksaan Singkat

Uji pemahaman Anda tentang pengamatan data dengan Flow.

Rangkuman

Anda telah mempelajari:

  • Metode DAO yang mengembalikan Flow akan memancarkan ulang saat data berubah.
  • Metode tersebut adalah fungsi biasa (bukan suspend) yang mengembalikan sebuah aliran.
  • Gunakan stateIn + collectAsStateWithLifecycle untuk menggerakkan antarmuka pengguna secara reaktif.
  • Basis data menjadi satu-satunya sumber kebenaran.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengamati Data dengan Flow” gratis?

Ya — teks lengkap “Mengamati Data dengan Flow” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengamati Data dengan Flow”?

Tanggapi perubahan basis data secara reaktif. Kamu berlatih Android 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 Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android 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 4 dari 4.

Berapa lama pelajaran “Mengamati Data dengan Flow” 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 Android Academy ini?

Ya. Setiap pelajaran Android 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. Entitas dan DAO
  2. Kelas Basis Data Room
  3. Kueri dan Relasi
  4. Mengamati Data dengan Flow
← Kembali ke Android Academy