Middle
Do czego służy StateFlow w rozwoju Androida?
sobes.tech AI
Odpowiedź od AI
StateFlow jest używany do reprezentowania strumienia danych, który zawsze ma wartość. Jest to "zimny" strumień i wysyła ostatnią wartość przy subskrypcji.
Główne zastosowania:
- Reprezentacja stanu UI: StateFlow jest idealny do przechowywania stanu ViewModel i przekazywania go do Activity lub Fragment.
- Udostępnianie danych: Wielu subskrybentów może słuchać tego samego StateFlow i otrzymywać aktualną wartość.
- Zamiana
LiveData: W projektach Kotlin często używa się StateFlow zamiastLiveDataze względu na lepszą integrację z korutynami i Kotlin Flow.
// Przykład użycia StateFlow w ViewModel
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
class MyViewModel : ViewModel() {
private val _uiState = MutableStateFlow(MyUiState(isLoading = true, data = null))
val uiState: StateFlow<MyUiState> = _uiState // Udostępnij jako niemutowalny StateFlow
data class MyUiState(
val isLoading: Boolean,
val data: List<String>?
)
fun loadData() {
// Symulacja ładowania danych
_uiState.value = MyUiState(isLoading = false, data = listOf("Item 1", "Item 2"))
}
}