Jetpack Compose Academy · Ders

Kanallarla Tek Seferlik Olaylar

Gezinme ve bildirim olaylarını güvenle iletin.

4. ders / 413 adım

Kanallarla Tek Seferlik Olaylar, CoddyKit'te ücretsiz bir Jetpack Compose Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Jetpack Compose Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Jetpack Compose Academy kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

State Is Not an Event

Some things should happen exactly once, like navigating or showing a toast. Modeling these as state causes them to replay on every rotation.

The Replay Problem

If you store a snackbar message in StateFlow, a configuration change re-reads it and the message pops up again unexpectedly.

Meet the Channel

A Channel is a hot pipe where each value is delivered to exactly one receiver and then consumed, never replayed.

private val _events = Channel<UiEvent>()

Send Versus Emit

You push into a Channel with send, a suspend call. The event waits in the buffer until something is ready to receive it.

_events.send(UiEvent.NavigateBack)

Expose as a Flow

Turn the channel into a stream for the UI with receiveAsFlow, which lets exactly one collector consume each event.

val events = _events.receiveAsFlow()

Consumed Once, Forever

Once a collector takes an event from the Channel, it is gone. A later rotation cannot read it again, so no accidental replay.

Model Events as a Type

Define a sealed UiEvent type so every one-off action, like navigation or messages, is explicit and exhaustive.

sealed interface UiEvent {
    data class ShowToast(val msg: String) : UiEvent
}

Collect Events in Compose

Collect the event flow inside a LaunchedEffect so it ties to the screen lifecycle and runs each event handler once.

LaunchedEffect(Unit) {
    events.collect { handle(it) }
}

Choose the Buffer Policy

A default Channel suspends the sender if no one receives. You can give it a buffer so sends never block your logic.

Channel<UiEvent>(Channel.BUFFERED)

SharedFlow Is an Alternative

A SharedFlow with replay zero can also carry events, but a Channel guarantees single delivery even with no active collector.

Keep State and Events Apart

The clean pattern: one StateFlow for screen state and one Channel for fire-once events. They never get confused again.

Quick Check

Decide what fits a one-off action.

Recap: One-Off Events

Awesome! A Channel delivers fire-once events like navigation and toasts exactly once, keeping them separate from replayable screen state. 🎯

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Kanallarla Tek Seferlik Olaylar” dersi ücretsiz mi?

Evet — “Kanallarla Tek Seferlik Olaylar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Jetpack Compose Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Jetpack Compose Academy kursu toplamda 4 dersten oluşur.

“Kanallarla Tek Seferlik Olaylar” dersinde ne öğreneceğim?

Gezinme ve bildirim olaylarını güvenle iletin. Jetpack Compose Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Jetpack Compose Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Jetpack Compose Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Kanallarla Tek Seferlik Olaylar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Jetpack Compose Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Jetpack Compose Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. StateFlow ve SharedFlow
  2. Flow'ları Eşleme ve Birleştirme
  3. stateIn ve WhileSubscribed
  4. Kanallarla Tek Seferlik Olaylar
← Jetpack Compose Academy Sayfasına Dön