android para android
Homepage
Sobre
Parte superior do formulário
Parte inferior do formulário
Resolvendo o erro NetworkOnMainThreadException no desenvolvimento Android maio 25 2 Comments Categoria: Android
Você menino maroto e faceiro desenvolvedor mobile está lá desenvolvendo seu app usando um virtual device com android 2.1 e tudo funciona maravilhosamente, você se acha o cara, já pensa em dominar o mundo desenvolvendo um aplicativo de alto nível que será vendido por um preço baixo, mas, que terá milhões de downloads e lhe renderá uma boa grana e visibilidade, fazendo o seu projeto ser comprado por um gigante como google ou facebook, quando de repente você vai testar seu app em um virtual device com android honeycomb ou superior e então…
Por que ocorre essa exceção?
Essa exceção ocorre a partir da API 11 ou versão 3.0 do android, como o próprio nome já diz, o motivo da exceção ocorrer é a aplicação estar efetuando algum processo de network na thread principal (daí o nome MainThread), nas versões anteriores essa operação é permitida apesar de não ser recomendada, pois dependendo do tempo que o processo demora, pode ocorrer um ANR (Application Not Responding).
O ANR geralmente ocorre quando a aplicação não responde aos comandos do usuário ou umBroadcastReceiver demora mais que 10 segundos, portanto ao fazer uma operação demorada nathread principal da aplicação que é a mesma thread da UI (User Interface ou simplesmente tela) sua aplicação pode travar, a partir da versão 3.0 do android foi implementada essa “proteção” no sistema, justamente para forçar o desenvolvedor a tomar um atitude quanto a essa questão, no Android a responsividade da aplicação é monitorada pelo Activity Manager e o Window Manager System Services.
Eu conheço 3 soluções para esse problema, uma ruim, uma razoável e uma ideal, abaixo vou descrevê-las.
Solução Ruim
A solução ruim é chamada dessa forma por não ser a solução recomendada para tratar o