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
}