Pesquisar este blog

domingo, 2 de janeiro de 2011

Google Android

Este post tem a finalidade de estudar sobre este sistema Android que vem crescendo gradativamente com o passar do tempo.
O Android é a plataforma open source criada pelo Google e pelo grupo Open Handset (OHA) para o desenvolvimento de aplicações para dispositivos móveis.
O sistema operacional do Android foi baseado no kernel 2.6 do Linux, e é responsável por gerencia a memória , os processo, threads e a segurança dos arquivos e pastas, além de redes e drives. Para construir suas aplicações é utilizada a linguagem Java, o fato é que em seu sistema operacional não existe uma máquina virtual Java (JVM), na verdade, o que temos é uma máquina virtual chamada (Dalvik virtual machine) que é otimizada para execução em dispositivos móveis. Normalmente quando desenvolvemos aplicações em Java a compilação é representada pelo arquivo .class é convertida para a extensão .dex (Dalvik Executable), os arquivos .dex e outros recursos como imagens são compactados em um arquivo com a extensão .apk (Android Package File), que representa a aplicação final, pronta para ser distribuída e instalada.

Arquitetura

As principais classes e conceitos da plataforma são:
  • Activity: classe que representa uma tela da aplicação, para cada tela é criado uma activity.
  • Context: classe pai de Activity utilizada como parâmetro em vários métodos para referenciar o "contexto" atual da execução.
  • View: classe que representa um componente gráfico. 
  • Intent: classe que representa um evento gerado pelo sistema, e prática é uma mensagem enviada ao sistema operacional. A Intent possui um "ação" e "categoria" que definem o seu conteúdo. Baseado no conteúdo o sistema operacional decide o que e qual classe deve ser executada. O mapeamento para decidir qual classe pode executar para determinada Intent é feito utilizando a classe IntentFilter. A classe Intente é utilizada para tudo, desde abrir uma nova tela, abrir o browser, efetuar uma chamada telefônica, disparar um serviço em background, etc. O sistema operacional também envia Intents para as aplicações, por exemplo, para notificar as aplicações instaladas de que uma mensagem SMS ou ligação foi recebida, que uma conexão coma internet está disponível, ou que o sistema operacional acabou de fazer o boot. 
  • IntentFilter: classe utilizada para mapear a ação de uma Intent para executar uma das classes do Android, como Activity, BroadcastReceiver ou Service. Por exemplo, quando uma Intent de ação "executar_algo" for disparada é possível mapear esta ação para executar qualquer tipo de classe. 
  • BroadcastReceiver: classe que pode reagir a eventos (Intent) e executar automaticamente em background. Deve executar rapidamente, no máximo 10 segundos caso contrário o processo será encerrado. Se necessário pode iniciar um serviço com a classe Service. Geralmente para intercepetar os eventos identificados por uma Intent. Seja os eventos gerados pela sua aplicação, como os eventos gerados pelo próprio sistema operacional.  
  • Service: classe utilizada para executar um processamento pesado ou demorado em background, sem interferir na atividade do usuário. 
  • Notification: classe utilizada para exibir uma notificação na barra de status do celular, para avisar o usuário sobre algo. Utilizado para que serviços em background se comuniquem como usuário de forma amigável. 
  • Content Provider: classe e conceito utilizado pelo Android para tornar informações de determinada aplicação públicas para qualquer outra que tenha acesso. Por exemplo, de forma nativa o Android permite que os contatos da agenda sejam consultados utilizando a API do Content Provider. Podem ser criados provedores de conteúdo para qualquer coisa e expor informações para outras aplicações. 
  • Handler: Classe utilizada para auxiliar na programação de multi-threading se for necessário atualizar a View de uma thread diferente da principal que controla a tela. Com um handler é atualizar a View de uma thread diferente da principal que controla a tela. Com um handler é possível inserir uma mensagem ou Runnable para ser processada por uma fila de mensagens. Resumindo: Quando abrirmos uma nova thread, não é possível atualizar a View. Uma das formas de solucionar este problema é utilizando a classe Handler.

Nenhum comentário:

Postar um comentário