Quem de nós nunca se deparou com o seguinte diálogo ao executar uma aplicação Android?
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, …