Fio
Um encadeamento é uma unidade de execução simultânea. Ele tem sua própria pilha de chamadas. Existem dois métodos para implementar threads em aplicativos.
Um está fornecendo uma nova classe que estende o Thread e substitui o método run (). O outro está fornecendo uma nova instância do Thread com um objeto Runnable durante sua criação. Um encadeamento pode ser executado chamando seu método "start". Você pode definir a "Prioridade" de um thread chamando seu método "setPriority (int)".
Um encadeamento pode ser usado se você não afetar a parte da interface do usuário. Por exemplo, você está chamando algum serviço da Web ou baixa alguns dados e, após o download, os exibe na tela. Então você precisa usar um Handler com um Thread e isso tornará seu aplicativo complicado para lidar com todas as respostas dos Threads.
Um manipulador permite enviar e processar objetos Message e Runnable associados ao MessageQueue de um thread. Cada encadeamento possui cada fila de mensagens. (Como uma lista de tarefas), e o thread pegará cada mensagem e a processará até que a fila de mensagens esteja vazia. Portanto, quando o manipulador se comunica, apenas envia uma mensagem para o segmento do chamador e aguarda o processamento.
Se você usar encadeamentos Java, precisará manipular os seguintes requisitos em seu próprio código:
Sincronização com o encadeamento principal se você postar de volta os resultados na interface do usuário Não há padrão para cancelar o encadeamento Não há pool de encadeamentos padrão Não há padrão para lidar com alterações de configuração no Android
AsyncTask
O AsyncTask permite o uso adequado e fácil do thread da interface do usuário. Essa classe permite executar operações em segundo plano e publicar resultados no thread da interface do usuário sem precisar manipular threads e / ou manipuladores. Uma tarefa assíncrona é definida por uma computação que é executada em um encadeamento em segundo plano e cujo resultado é publicado no encadeamento da interface do usuário.
O AsyncTask passará pelas quatro etapas a seguir:
onPreExecute ()
Chamado no thread da interface do usuário antes da tarefa ser executada
doInbackground (Params ..)
Chamado no segmento de plano de fundo imediatamente após onPreExecute () concluir a execução.
onProgressUpdate (Progress ..)
Chamado no thread da interface do usuário após uma chamada para publishProgress (Progress ...).
onPostExecute (Resultado)
Chamado no thread da interface do usuário após o término da computação em segundo plano.
Por que você deve usar o AsyncTask?
Fácil de usar para um thread de interface do usuário. (Portanto, use-o quando o thread do chamador for um thread da interface do usuário).
Não há necessidade de manipular manipuladores.