Sobes.tech
Middle

Issiq va sovuq oqimlar o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Isitgich (Hot) oqimlar:

  • Kuzatuvchilarning mavjudligidan qat'i nazar faol.
  • Abonentlarga obuna bo'lgan vaqtdan boshlab doimo eng so'nggi mavjud ma'lumotlarni taqdim etadi.
  • Misollar: LiveData, StateFlow, SharedFlow.

Sovuq (Cold) oqimlar:

  • Faqat kamida bitta kuzatuvchi bo'lsa faol.
  • Har bir yangi obuna uchun logikani bajaradi.
  • Misollar: Flow, Sequence.

StateFlow — bu SharedFlow ning maxsus turi bo'lib, oxirgi qiymatni eslab qoladi. SharedFlow ni replay=1 buffer bilan StateFlow sifatida sozlash mumkin.

Asosiy farqlar:

Amalga oshirish Isitgich oqim Sovuq oqim
Faollik Doimiy Obuna bilan
Logik bajarilishi Bir marta Har obuna uchun
Holatni eslab qolish Ha (LiveData, StateFlow, SharedFlow bilan replay) Yo'q (standart)
Ko'p foydalanuvchili Ha Yo'q (har bir obuna alohida nusxani oladi)

Isitgich oqimlar UI holatini yoki umumiy ma'lumotlarni ifodalash uchun ishlatiladi. Sovuq oqimlar obuna bo'lganda, tarmoq so'rovlar yoki ma'lumotlar bazasi so'rovlarini bajarish uchun ishlatiladi.

Sovuq oqim misoli:

// Bu oqim obuna bo'lsa, ma'lumotlarni yuklaydi
fun loadData(): Flow<Data> = flow {
    // Bu yerda ma'lumotlar yuklanadi
    emit(NetworkApi.getData())
}

Isitgich oqim misoli (StateFlow):

// Bu oqim har doim qiymatga ega va obuna bo'lish uchun mavjud
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

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