debounce ve conflate
- Kotlin kursu
- İleri seviye
- Ders 10/83
- 5 dk
debounce ve conflate ile akış kontrolü öğrenirsin.
debounce ve conflate
debounce, bir akışta hızlı art arda gelen değerleri sıkıştırır. Bir değer geldikten sonra belirli süre boyunca yeni değer gelmezse o değer yayınlanır; gelirse eski değer atılır.
conflate, toplayıcı yavaşsa ara değerleri atıp yalnızca en son değeri saklar. Arama kutusunda harf yazdıkça öneri göstermek için debounce, hızlı bir sensör akışını UI'da göstermek için conflate uygundur. İkisi de akış üzerinde ara bellek ihtiyacını azaltır.
debounce vs conflate
debounce süreye göre çalışır: belirli bir süre içinde yeni değer gelmezse yayın yapar. Bu, kullanıcı yazarken her tuş vuruşunu ayrı işlemek yerine durakladığı anı yakalamak için uygundur.
conflate ise toplayıcının hızına göre çalışır. Toptyıcı bir değeri işlerken akış yeni değer üretirse, conflate eski değeri atlayıp en yeniye geçer. İkisi de performansı artırır ama davranışları farklıdır: debounce zaman eşiğine, conflate toplayıcı hızına bakar.
Uygulama conflate ile akışı topla
flowOf(1, 2, 3).conflate().collect { value -> println("Değer: $value") } yaz. Her değerin yazdırıldığını göreceksin.
Başlangıç kodu
// conflate ile akış
// buraya yaz
fun main() = runBlocking {
}Örnek çözüm
fun main() = runBlocking {
flowOf(1, 2, 3).conflate().collect { value ->
println("Değer: $value")
}
}Beklenen çıktı
Değer: 1 Değer: 2 Değer: 3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 debounce çağrısını tamamla
flow.____(100)
flow.debounce(100)
Açıklama: debounce ile hızlı değerler sıkıştırılır.
2 conflate ne yapar?
- Tüm değerleri iptal eder
- En son değeri saklar Doğru cevap
- Akışı durdurur
- Her değeri bekler
Açıklama: conflate yavaş toplayıcıda son değeri saklar.
3 debounce ve conflate eşle
| Kavram | Anlamı |
|---|---|
debounce |
Süreye göre |
conflate |
Toplayıcı hızına göre |
ara değer |
Atılır |
en son değer |
Saklanır |