Olá e bem-vindo. Nesta lição, você aprenderá sobre os fundamentos de programação assíncrona. Você aprenderá o que o termo realmente significa e por que é tão importante na estrutura da interface do usuário do Android. Então, a razão pela qual temos programação assíncrona é porque certas funções na programação demora muito para ser executado, como a chamada, como a rede, como uma solicitação HTTP, carregar arquivos de mídia, chamar um servidor, chamar uma API, ou chamando um cálculo pesado. Todas essas funções demoram um pouco para serem executadas. Então os programadores criaram o conceito de programação assíncrona, pelo qual você não precisa executar todas as suas funções sequencialmente ou de forma síncrona. Em vez disso, você pode executá-lo de forma assíncrona para fazer trabalho paralelo ou executar funções e simultaneidade. Então, todas aquelas situações em que você tem uma chamada longa a uma função, é fundamental que você queira evitar todo esse desempenho ruim que pode fazer com que seu aplicativo não responder ou ser lento, ou até mesmo bater. Então temos esse método chamado programação assíncrona onde podemos enviar sua lógica para um branch alternativo ou um thread alternativo enquanto o thread principal continua com a carga pesada. Então você pode criar funções assíncronas fazer duas coisas diferentes ou várias coisas. E se estiver fazendo uma coisa com sucesso, então você pode ficar no tópico principal. Mas se algo der errado, você pode ramificar para outro segmento. Então você está simplesmente fazendo programação assíncrona sempre que você chama uma função que foi configurada de forma assíncrona, para que quando o programa inicia um tópico, ele pode ficar lá por algum tempo e esperar que você retorne um valor. Tipo vou clicar aqui e está esperando esse valor aqui ser devolvido, mas esse valor pode não ser retornado imediatamente. Mas em algum momento no futuro, ele será devolvido, e isso será tratado de forma assíncrona. E se você estiver realizando uma solicitação de rede ou você está consultando um banco de dados, é quase certo que haverá um atraso em sua funcionalidade. E quando há atraso e você está tentando algo de forma síncrona, então você vai ter grandes problemas. Portanto, é muito importante escrever seu código de uma forma que antecipa o atraso ou o bloqueio, e você corta de forma que sua lógica funcione de uma forma de bloqueio para bloquear o atraso e escolhe uma rota diferente ou um segmento diferente. Então, se o thread principal estiver esperando para receber uma resposta a partir de uma solicitação de rede, em programação assíncrona, seria bloqueado até que seja capaz de cuidar dessas responsabilidades. E enquanto isso, o programa pode continuar fazendo outra coisa dependendo se há sucesso ou fracasso. E faz isso de forma assíncrona. Portanto, há várias maneiras de lidar com programação assíncrona. Uma das maneiras mais antigas é usar um padrão de retorno de chamada, em que a função retorna nossas chamadas de volta a um determinado valor. Outra maneira que o Kotlin faz é usar corrotinas, que foi criado por Kotlin para lidar com programação assíncrona de maneira muito eficiente, chamadas corrotinas. E nós os usamos para que o fluxo do seu programa Kotlin pode mover-se de forma eficiente pelas três entidades de um fluxo de programa. E esse fluxo de programa sempre tem uma coisa que produzirá dados. E então há uma coisa que modificará os dados. E há uma coisa que usará os dados, e isso é normalmente chamado de consumidor de dados. Vou produzir dados fazendo este clique, e então há uma modificação. E então consumimos os dados que estão aqui. E fazemos isso por meio da interação do usuário. Então fazemos programação assíncrona, e especialmente, em Kotlin, fazemos corrotinas por duas razões. Um é, em algum momento, nós vamos ter uma tarefa de longa duração que está fazendo cálculos pesados e está bloqueando o thread principal. Então, temos que contorná-lo de forma assíncrona. E então a outra razão é por razões de segurança onde temos que suspender uma função até que possamos torná-lo bem sucedido. Agora, todo programa Kotlin começa com um thread principal ou uma atividade principal. E vai ficar nesse tópico principal por toda a sua tarefa de interface do usuário até que você codifique outra coisa. Então você tem que coordenar sua tarefa com a interação do usuário. E você poderia fazer isso através de programação assíncrona e coordenar através de corrotinas. Então tudo isso vai para a experiência do usuário e melhorar a experiência do usuário, e melhorar a interação do usuário, porque a programação assíncrona permite ao usuário para fazer coisas no aplicativo como clicar em um botão enquanto outro processo está sendo executado em segundo plano e produzindo um tipo diferente de resultado. E tudo isso melhora a experiência do usuário. Então isso conclui nossa lição sobre os fundamentos de programação assíncrona. Obrigado por assistir. Fique ligado na próxima aula. Então vamos.