StateFlow ve SharedFlow
Uygulamanızdaki tepkisel durumu dışarı açın.
StateFlow ve SharedFlow, CoddyKit'te ücretsiz bir Android 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, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Sıcak Flow'lar
Soğuk Flow'ların aksine StateFlow ve SharedFlow sıcaktır: toplayıcılardan bağımsız olarak var olurlar ve birçok toplayıcı arasında paylaşılabilirler.
StateFlow Bir Durum Tutucudur
Bir StateFlow her zaman tek bir güncel değer tutar. Yeni toplayıcılar en son değeri hemen alır. Kullanıcı arayüzü durumu için idealdir.
private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count.asStateFlow()StateFlow'u Güncelleme
.value değerini doğrudan ayarlayın veya atomik okuma-değiştirme-yazma işlemi için update kullanın.
_count.value++
// or, atomically:
_count.update { it + 1 }StateFlow Birleştirir ve Tekilleştirir
StateFlow yalnızca en son değeri tutar (birleştirme) ve yeni değer eski değere eşitse değer yaymayı atlar. Bu, gereksiz kullanıcı arayüzü güncellemelerini önler.
Olaylar için SharedFlow
Bir SharedFlow'un zorunlu bir güncel değeri yoktur ve geçmişte yayılan, yapılandırılabilir sayıda değeri yeniden oynatabilir. Gezinme veya bildirim çubuğu gösterme gibi tek seferlik olaylar için uygundur.
private val _events = MutableSharedFlow<String>()
val events: SharedFlow<String> = _events.asSharedFlow()Olayları Yayma
Bir korutinden SharedFlow'a değer yayınlayın.
fun onSave() {
viewModelScope.launch {
_events.emit("Saved!")
}
}Olaylar için Neden StateFlow Kullanılmamalı
StateFlow son değeri tuttuğu için yeniden abone olan bir toplayıcı (döndürmeden sonra) eski olayı yeniden alır ve örneğin iki kez gezinme başlatabilir. SharedFlow varsayılan olarak yeniden oynatmayı önler.
SharedFlow'u Yapılandırma
Tamponlama ve geri basınç davranışını denetlemek için replay ve extraBufferCapacity değerlerini ayarlayın.
MutableSharedFlow<String>(
replay = 0,
extraBufferCapacity = 1
)Soğuk Flow'u StateFlow'a Dönüştürme
Soğuk üst akışı ViewModel kapsamına alınmış paylaşılan bir StateFlow'a dönüştürmek için stateIn kullanın.
val uiState = repo.stream()
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(5000),
UiState()
)Aralarında Seçim Yapma
- StateFlow → mevcut ekran durumu (her zaman bir değeri vardır).
- SharedFlow → geçici olaylar (bir kez çalışır).
İkisini de Toplama
Compose'ta StateFlow'u collectAsStateWithLifecycle ile; SharedFlow olaylarını ise bir kez ele almak için LaunchedEffect içinde toplayın.
LaunchedEffect(Unit) {
vm.events.collect { msg -> showSnackbar(msg) }
}Hızlı Kontrol
StateFlow ve SharedFlow konusundaki anlayışınızı sınayın.
Özet
Şunları öğrendiniz:
- StateFlow, geçerli bir değere sahip, sıcak ve birleştirmeli bir durum tutucudur.
- SharedFlow, yeniden oynatma davranışı yapılandırılabilen sıcak bir olay akışıdır.
- Durum için StateFlow, tek seferlik olaylar için SharedFlow kullanın.
stateIn, soğuk akışları StateFlow'a dönüştürür.
Sıkça Sorulan Sorular
“StateFlow ve SharedFlow” dersi ücretsiz mi?
Evet — “StateFlow ve SharedFlow” 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 Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“StateFlow ve SharedFlow” dersinde ne öğreneceğim?
Uygulamanızdaki tepkisel durumu dışarı açın. Android 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.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android 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.
“StateFlow ve SharedFlow” 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 Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android 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
- Coroutine Temelleri ve Kapsamlar
- viewModelScope ve Dispatcher'lar
- Kotlin Flow Temelleri
- StateFlow ve SharedFlow