Makrosites

Suas ideias em realidade digital!

Coroutines e Flow no Android: guia profissional moderno (suspend, StateFlow e ViewModel)

Coroutines e Flow no Android: guia profissional moderno (suspend, StateFlow e ViewModel)

Por que usar Coroutines no Android?

Antes das Coroutines, usávamos:

Coroutines simplificam código assíncrono, deixando mais limpo e seguro.


1️⃣ Adicionando dependências

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"

2️⃣ Função suspend simples

suspend fun fetchUsers(): List {
    return api.getUsers()
}

Agora pode ser chamada dentro de coroutine:

viewModelScope.launch {
    val users = repository.fetchUsers()
}

3️⃣ O que é Flow?

Flow é uma stream assíncrona de dados. Ideal para:


4️⃣ Criando Flow no Repository

fun getUsers(): Flow> {
    return dao.getAll()
}

5️⃣ Usando StateFlow no ViewModel

class UserViewModel(
    private val repository: UserRepository
) : ViewModel() {

    private val _users = MutableStateFlow>(emptyList())
    val users: StateFlow> = _users

    fun loadUsers() {
        viewModelScope.launch {
            repository.getUsers().collect {
                _users.value = it
            }
        }
    }
}

6️⃣ Observando na Activity

lifecycleScope.launchWhenStarted {
    viewModel.users.collect { list ->
        // Atualiza UI
    }
}

Flow vs LiveData


Boas práticas modernas


Integração com Room + Retrofit

Coroutines funcionam perfeitamente com: