Acessando a rede através de HTTP

1423687551_Globe

Neste capítulo do curso de Android iremos aprender como acessar um servidor utilizando HTTP.

Iremos utilizar este servidor para fazer backup das notas criadas pela nossa aplicação QuickNotes.

Se você não estava acompanhando o Curso de Android, faça o download do projeto aqui, pois as alterações serão feitas neste projeto.

 

Clientes HTTP em Android

Em Android temos dois clientes HTTP:

  • Apache HTTP Client
  • HttpURLConnection

O Google aconselha o uso de HttpURLConnection desde a versão 2.3 (Gingerbread)

Usaremos o HTTPUrlConnection para enviar as notas, que no nosso exemplo são armazenadas no banco de dados local, para o servidor remoto. Abaixo segue a implementação:


String urlParameters = "nota=" + URLEncoder.encode(note,"UTF-8");
String request = "http://tests.felipesilveira.com.br/android-core/insert.php";
URL url = new URL(request);

// Criando a instância de HttpURLConnection responsável por acessar a rede
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false);
// Vamos enviar a requisição via POST
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", "" + 
		Integer.toString(urlParameters.getBytes().length));
connection.setUseCaches (false);

// Criando um 

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, …

Ferramenta muito útil: Android Layout Finder

Uma das coisas mais trabalhosas que o desenvolvedor android precisa fazer quando cria uma nova Activity é “mapear” os widgets declarados em um layout XML para variáveis na sua classe Java, usando findViewById.

Existem muitas formas de evitar esse trabalho (usando Annotations, libraries, etc) mas uma das ferramentas mais simples e mais úteis que conheço para resolver este problema é o Android Layout Finder, uma ferramenta online que gera todas as declarações e inicializações das variáveis referentes aos widgets do seu layout (TextView, EditTexts, etc..)

Screen Shot 2015-01-13 at 12.09.18 PM

Se ainda não conhece, vale a pena conhecer! Já está nos meus favoritos :-)

Google I/O 2014 no ar!

Está acontecendo, nesse momento, o evento Google I/O 2014, onde está sendo apresentado a nova versão de Android (Android Lollipop, ou simplesmente Android L).

Para os desenvolvedores Android, é obrigatório assistir!

No seguinte link é possível encontrar a transmissão online: https://www.google.com/events/io

Android Core!

Ministrei no último ano um curso sobre Android Core – detalhes da implementação da plataforma Android, desde as alterações necessárias no kernel linux até a implementação das APIs e aplicativos Android.

O material deste curso pode ser encontrado aqui > Android Core – Implementação da plataforma Android.

Tem curiosidade para saber como é implementada cada camada da arquitetura de um sistema Android? Este curso é um bom começo!

 …

Android e o facebook

Pessoal,

Ministrei nessa semana uma palestra na UNASP, com o tema: “Android e o facebook”, onde mostrei como integrar uma aplicação Android ao facebook.

A apresentação está no link a seguir:

Android e facebook – integração com SDK

E o projeto da aplicação de exemplo, para quem tiver interesse, está no link a seguir:

Android e facebook – projeto completo