Sobes.tech
Middle

Sıcak ve soğuk akımlar arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Sıcak (Hot) akışlar:

  • Gözlemcilerin varlığına bakılmaksızın aktiftirler.
  • Abonelere abone olunduğu andan itibaren her zaman en son erişilebilir verileri sağlarlar.
  • Örnekler: LiveData, StateFlow, SharedFlow.

Soğuk (Cold) akışlar:

  • En az bir gözlemci varsa aktiftirler.
  • Her yeni abone olunduğunda mantığı çalıştırırlar.
  • Örnekler: Flow, Sequence.

StateFlow, son değeri hafızasında tutan özel bir SharedFlow'dur. SharedFlow, replay=1 tamponu ile StateFlow gibi çalışacak şekilde yapılandırılabilir.

Ana farklar:

İşlem Sıcak akış Soğuk akış
Aktivite Her zaman Abonelikle
Mantık yürütme Bir kez Her abone olunduğunda
Durum hafızası Evet (LiveData, StateFlow, replay ile SharedFlow) Hayır (varsayılan)
Çok kullanıcılı Evet Hayır (her abone ayrı bir kopya alır)

Sıcak akışlar, UI durumu veya ortak verilerin temsil edilmesi için kullanılır. Soğuk akışlar, abonelik sırasında ağ istekleri veya veritabanı sorguları gibi işlemleri gerçekleştirmek için kullanılır.

Soğuk akış örneği:

// Bu akış, yalnızca abone varsa veri yükleyecektir
fun loadData(): Flow<Data> = flow {
    // Burada veri yükleme gerçekleşir
    emit(NetworkApi.getData())
}

Sıcak akış örneği (StateFlow):

// Bu akış her zaman bir değere sahiptir ve abone olmaya açıktır
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

fun updateState(newState: UiState) {
    uiState.value = newState
}