Olá, neste vídeo, vamos falar sobre como iniciar uma tarefa em segundo plano em seu aplicativo Android. Agora, em Java, uma tarefa executável é uma unidade de trabalho. E assim podemos atribuir coisas como o nível de prioridade do trabalho, e também podemos configurá-lo para atrasar para que possa ser executado no futuro. Então, damos a ele um carimbo de data / hora. Então é assim que parece ao criar uma tarefa executável em Java. Você diz, executável, dê um nome, e torná-la uma nova classe executável. Ele tem um método dentro dele chamado run. E assim, o propósito de uma tarefa executável é para que você possa dividi-lo em diferentes segmentos. Agora, um thread é um processo ou um caminho que um processo passa. E assim, o thread principal é geralmente o que programamos, porque pensamos em um programa sequencial. Então, vamos dar uma olhada em alguns códigos de como isso pode ser feito. Então o que eu tenho aqui é uma amostra de um ouvinte de clique para um botão. E então temos um onclick dele. Agora, o que temos dentro é um pouco diferente. Eu criei um novo tópico e, dentro dele, Eu criei o que é chamado de unidade de trabalho. Então, veremos isso em apenas um segundo. Esse é realmente um processo executável. E então dizemos ao tópico para começar. Então, o que isso vai fazer é dizer, não toque no tópico principal onde ouvimos os cliques do mouse. Vamos começar outro tópico. Provavelmente tem uma prioridade menor, e vamos deixar o processo rodar lá. Então você pode querer dizer, vamos baixar um arquivo ou vamos consultar um banco de dados ou vamos desenhar algo ou renderizar uma imagem. E então o processo provavelmente vai demorar um pouco. A maior parte do tempo, não temos que nos preocupar sobre quanto tempo algo leva porque os processos são quase instantâneos. Mas neste caso, fingindo que temos algo muito lento. Vejamos o próximo código. Então é assim que a unidade de trabalho se parece. Este é o processo executável. Portanto, o processo executável terá um único método chamado run. E então, no meu caso, vamos codificar aqui, é que vou simular algo isso leva cinco segundos. E então eu só tenho a declaração de atraso aqui, ou a declaração de sono que diz, o que quer que você esteja fazendo, pare, e não vá mais longe por 5.000 milissegundos. Agora, quando chegarmos a este fim, Eu quero mostrar algo na tela. Eu quero fazer um brinde. E para fazer um brinde, você tem que ser capaz de executá-lo no thread principal. E então temos que criar outro processo executável dentro deste executável. Portanto, este executável tem um comando especial, é exclusivo do Android, diz ser executado no thread de interface do usuário. Isso significa ir para o tópico principal que estava lidando com todos os cliques de botão, e então faça este processo. E você pode ver que um brinde é algo essa é a interface do usuário. Se fosse outra coisa, como imprimir em um arquivo de log ou apenas calcule uma resposta e retorne-a, então você não teria que se preocupar com em execução no encadeamento da interface do usuário. Mas se você tiver que atualizar um campo de texto ou mude a cor de um botão ou, neste caso, faça um brinde, você está tocando o thread da IU. E é por isso que dizemos em qual thread executar. E então essa unidade de trabalho seria o que colocaríamos no clique do botão. Agora, há outra maneira de lidar com isso. Em vez de usar run on UI thread, a maioria dos programadores usaria isso. Eles chamariam um manipulador. Então, lembre-se, o manipulador é como o braço do robô que pega a tarefa e a coloca na esteira. Então, o manipulador diz: Vou criar uma nova instância do objeto manipulador, e vou especificar que é do Looper principal. E então aqui dentro, você pode me dizer que vou postar um novo objeto executável no loop principal. E assim postar um novo item. E isso é como inseri-lo na correia transportadora no chão de fábrica. E quando você POSTAR, você pode presumir que isso será tratado imediatamente. Mas existem outros comandos, como POST com um atraso. E então você pode configurar um cronômetro para dizer, faça isso em cinco segundos, e então ele vai esperar antes que seja realmente executado. Esses são alguns exemplos de como você torna tarefas executáveis e como você os POSTAR e como proteger seu loop principal, sua interface de usuário, para que não fique travada. Então, vamos codificar um pouco disso, e veremos um exemplo de como funciona.