Posts com a tag ‘application not responding’

Threads separadas em Android

Quem de nós nunca se deparou com o seguinte diálogo ao executar uma aplicação Android?

ANR - application not responding

Mas o que causa esse problema?

Este é um diálogo mostrado pelo sistema quando ao identificar que a aplicação está executando muitas operações na main thread – a thread principal ou UI thread.

A UI thread é responsável pelas interações com o usuário.  Por isso, quando o sistema percebe que ela está fazendo muito processamento, ele considera que a aplicação não está respondendo ao usuário e, portanto, está travada. Neste momento ele dá a opção de fechar a aplicação – o inconveniente diálogo application not responding – ou simplesmente ANR.

Como evitar um ANR

Mas como evitar um ANR? Simples! Basta executar as operações demoradas (como acesso a rede, acesso a banco de dados, entre outros) de sua aplicação em uma thread separada. E para fazer isso existem três mecanismos:

  • Threads (Java nativo)
  • Asynctasks
  • Handlers

O primeiro mecanismo (threads nativas de java) funciona, …