ANR: O que significa a sigla ANR e o que causa esse erro?
Main Thread: O que deve e o que NÃO deve rodar na Main Thread?
🟡 Médios
Dispatchers: Qual Dispatcher você usaria para: a) Ordenar uma lista de 10.000 nomes (CPU intensive). b) Salvar um arquivo no disco (IO). c) Atualizar um TextView (UI).
Suspensão: O que acontece com a Thread Principal quando ela encontra uma função suspend que chama delay(5000)? Ela trava por 5 segundos ou continua livre para desenhar a tela?
Sockets vs REST: Explique a principal diferença entre uma comunicação REST e uma comunicação via Sockets (TCP). Quando você escolheria usar Sockets em vez de REST em um aplicativo Android?
🔴 Desafio
Race Condition (Condição de Corrida): Duas coroutines tentam alterar a mesma variável contador = 0 ao mesmo tempo. Ambas leem 0, somam 1 e salvam 1. O resultado final é 1, mas deveria ser 2.
Como resolver isso em Kotlin (Mutex, Atomic, ou Single Thread)?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado ### Questão 1: ANR **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (ANR) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Main Thread **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (Main Thread) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Dispatchers **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (Dispatchers) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Suspensão **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (Suspensão) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Sockets vs REST **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (Sockets vs REST) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 6: Race Condition (Condição de Corrida) **Resposta Comentada:** - **Fundamentação:** No contexto de **Threads e Assincronismo (Coroutines)**, o conceito abordado (Race Condition (Condição de Corrida)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.