(!= threads) • Várias coroutines podem usar 1 única thread • Light-weight threads • Maior eficiência (Menor custo na criação e troca de contexto) • Callbacks -> Operações assíncronas
◦ função com o modificador suspend ◦ função que pode ser suspensa ◦ Pausadas e resumidas sem bloquear a main thread ◦ Por si só, não executa em uma thread separada. ◦ Só podem ser chamadas dentro de outra suspend
de terminar • Suspend pode pausar a execução para outra função executar na mesma thread • Suspend retorna a execução após pausar • Suspend é função normal com um parâmetro a mais
vida termina quando completo • Pode ser organizado de hierarquia (pai-filho) • Não retorna valor • Possui estados (new, active, completing, cancelling, cancelled & completed)
durante toda a aplicação (tempo de vida da coroutine == tempo de vida da app) ◦ Não são cancelados prematuramente ◦ Não recomendado usar con launch e async
a thread • withTimeout: estabelece tempo máximo para executar o código, porém se der timeout irá solicitar uma exception (TimeoutCancellationException) • withTimeoutOrNull: não solicita exception e se der timeout irá retornar null.