Analise as afirmações a seguir sobre a classe Handler e Asyn...
I. O método onPreExecute() da classe AsyncTask deve ser executado manualmente para dar início ao Thread.
II. O método sendMensage(msg) é um método da classe Handler que envia a mensagem informada para a fila de mensagens para ser processada assim que possível.
III. A classe AsyncTask gerencia internamente as threads e os handlers necessários para atualizar a interface.
IV. A classe AsyncTask contém métodos para atualizar o andamento (progresso) de uma tarefa, por exemplo, o progresso de um download.
Estão corretas apenas as afirmativas
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A - II, III e IV.
Para entender por que essa alternativa é a correta, vamos analisar cada afirmação:
- Afirmação II: O método
sendMessage(msg)
é um método da classeHandler
que, de fato, envia uma mensagem para a fila de mensagens, onde será processada peloLooper
associado à thread. Isso é utilizado frequentemente para comunicar-se com a thread principal a partir de uma thread secundária, permitindo a atualização da interface do usuário de forma segura. - Afirmação III: A classe
AsyncTask
simplifica o trabalho com threads no Android, gerenciando internamente as operações realizadas em uma thread secundária e as atualizações na thread principal. Isso permite executar operações em segundo plano e atualizar a interface do usuário sem precisar manipular diretamente threads e handlers. - Afirmação IV: A
AsyncTask
fornece métodos comoonProgressUpdate(Progress...)
epublishProgress(Progress...)
que ajudam a atualizar a interface do usuário com o progresso de tarefas longas, como o download de um arquivo.
Em relação à Afirmação I, ela é incorreta porque o método onPreExecute()
da classe AsyncTask
é chamado automaticamente antes da execução da tarefa em segundo plano. Ele é executado na thread principal e é um bom lugar para configurar a UI, por exemplo, mostrando uma barra de progresso. Para iniciar uma AsyncTask
, você deve chamar o método execute()
na instância da sua AsyncTask
, e o onPreExecute()
será chamado em seguida.
Compreender o funcionamento de Handler
e AsyncTask
é importante para o desenvolvimento mobile no Android, principalmente quando se lida com operações que demandam tempo e não podem ser executadas na thread principal do aplicativo, evitando assim que a interface do usuário fique travada ou não responsiva.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
a questão trata sobre paralelismos e threads , ao programar em Android.
o Paralelismo depende da quantidade de núcleos de um processador e , em um caso de um celular com apenas um núcleo, torna-se inviável utilizar essa técnica. Em tese , seria impossível para um usuário ouvir música, abrir o navegador escrever um texto ao mesmo tempo.
pensando nisso , nasceu o PseudoParalelismo , que nada mais é que um sistema interno que permite executar as tarefas um pouco de cada vez em determinados tempos.
Para fazer isso no Android, usam-se Threads que criam linhas de execução a serem processadas em Paralelo.
Até ai tudo bem , não é um processo difícil criar essas threads. O problema ocorre quando precisamos atualizar a interface gráfica do usuário com as informações processadas, pois o trabalho é um pouco mais complexo, sendo necessário a utilização de handlers.
Para facilitar esse processo , foi criada a classe AsyncTask, que encapsula todo o procesao de criação de Handlers e Threads.
com esse entendimento , fica fácil perceber que não é um processo manual , como define a única assertiva errada ( I )
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo