Sobes.tech
Middle

Ի՞նչ է տաք և սառը հոսքերի տարբերությունը:

sobes.tech AI

Պատասխան AI-ից

Տաք (Hot) հոսքերը՝

  • ակտիվ են անկախ դիտորդների ներկայությունից:
  • միշտ տրամադրում են վերջին հասանելի տվյալները գրանցման պահից սկսած:
  • օրինակներ՝ LiveData, StateFlow, SharedFlow:

Ձմեռ (Cold) հոսքերը՝

  • ակտիվ են միայն երբ առնվազն մեկ դիտորդ կա:
  • իրականացնում են տրամաբանությունը յուրաքանչյուր նոր գրանցման ժամանակ:
  • օրինակներ՝ Flow, Sequence:

StateFlow — դա SharedFlow-ի մասնագիտացված տեսակ է, որը հիշում է վերջին արժեքը: SharedFlow-ը կարող է կազմաձևվել այնպես, որ աշխատի որպես StateFlow`` replay=1 բուֆերով:

Հիմնական տարբերությունները՝

Գործողություն Տաք հոսք Ձմեռ հոսք
Ակտիվություն Ամեն ժամանակ Գրանցման ժամանակ
Գործարկում լոգիկա Միայն մեկ անգամ Յուրաքանչյուր գրանցման ժամանակ
Կարգավիճակի հիշողություն Այո (LiveData, StateFlow, SharedFlow replay-ով) Ոչ (ստանդարտ)
Բազմագործառական Այո Ոչ (յուրաքանչյուր գրանցող ստանում է առանձին պատճեն)

Տաք հոսքերը օգտագործվում են UI վիճակի կամ ընդհանուր տվյալների ներկայացման համար: ձմեռ հոսքերը՝ գրանցման ժամանակ գործողությունների իրականացման համար, ինչպիսիք են ցանցային հարցումները կամ տվյալների բազայի հարցումները:

Ձմեռ հոսքի օրինակ՝

// Այս հոսքը միայն տվյալներ բեռնում է, եթե կա գրանցող
fun loadData(): Flow<Data> = flow {
    // Այստեղ տեղի է ունենում տվյալների բեռնումը
    emit(NetworkApi.getData())
}

Տաք հոսքի օրինակ (StateFlow)

// Այս հոսքը միշտ ունի արժեք և հասանելի է գրանցման համար
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

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