Eu tenho um pouco confuso sobre as diferenças entre Handlers
, AsyncTask
e Threads
no Android. Eu li vários blogs e perguntas aqui no StackOverflow.
Handler
são threads de segundo plano que fornecem a comunicação com a interface do usuário. A atualização de uma barra de progresso, por exemplo, deve ser feita via Handler
. Usando manipuladores, você tem a vantagem de MessagingQueues
, portanto, se você deseja agendar mensagens ou atualizar vários elementos da interface do usuário ou executar tarefas repetidas.
AsyncTask
são semelhantes, na verdade, eles usam Handler
, mas não são executados no thread da interface do usuário, por isso é bom para buscar dados, por exemplo, buscar serviços da web. Mais tarde, você pode interagir com a interface do usuário.
Thread
no entanto, não pode interagir com a interface do usuário, forneça mais threads "básico" e você perderá todas as abstrações de AsyncTask
.
No entanto, eu gostaria de ter uma conexão de soquete em serviço. Isso deve ser executado em um manipulador ou um encadeamento, ou mesmo umAsyncTask
? A interação da interface do usuário não é necessária. Faz alguma diferença em termos de desempenho que eu uso?
Enquanto isso, a documentação foi amplamente aprimorada.
Handler
não é um encadeamento e não executa nada. É apenas um meio de passar com segurança mensagens de um thread para a fila de mensagens de outro thread . Portanto, normalmente (pelo menos) dois encadeamentos ainda devem ser criados, os quais podem usar um manipulador, mas o manipulador não pode executar nada.