Pular para o conteúdo principal

Antes do hello world um pouco de teoria (Android)

Eu sei que o legal de desenvolver é pular a parte chata (documentação e teoria) e ir direto para o desenvolvimento, fazendo de cara o bom e velho hello world, ok sem problema, mas depois é bom dar uma olhada nos fundamentos para ter noção das possibilidades da plataforma.

 

Um aplicativo dentro do sistema Android

As aplicações Android são codificadas em Java, depois de tudo compilado, código e recursos são colocados em um pacote, com extensão .apk, esse é o “instalador” da apicação desenvolvida.

Depois de instalado, a aplicação fica em seu próprio “sand box”:

  • O Android é um SO baseado em Linux, cada aplicação é tratada como um usuário distinto;
  • Cada aplicação recebe um ID de usuário único, onde apenas esse usuário possui permissão de acesso aos arquivos da aplicação;
  • Cada processo tem sua própria máquina virtual (VM), então o código de um aplicativo é executado isoladamente de outras aplicações.
  • Cada aplicativo é executado em seu próprio processo, que inicia quando um dos componentes da aplicação precisa ser executada e encerra caso contrário para a liberação de memória;

Desta forma, o sistema Android implementa o princípio de privilégio mínimo. Ou seja, cada aplicação, por padrão, só tem acesso aos componentes que ele necessita para fazer o seu trabalho e nada mais. Isso cria um ambiente muito seguro em que um aplicativo não pode acessar partes do sistema para o qual não é dado a permissão.

Porém existem maneiras de compartilhar dados com outras aplicações ou mesmo acessar outros serviços:

  • É possível configurar duas aplicações com o mesmo ID, de forma que ambas podem compartilhar seus recursos;
  • Um aplicativo pode solicitar permissão para acessar os dados do dispositivo, como contatos do usuário, mensagens SMS, o armazenamento (cartão SD), câmera, Bluetooth e outros. Todas as permissões devem ser concedidas pelo usuário no momento da instalação.

 

Componentes de aplicação

São os blocos de construção de uma aplicação, onde cada um permite uma maneira de entrada do sistema para a aplicação. Nem todos os componentes são pontos de entrada real para o usuário e alguns dependem uns dos outros, mas cada um existe como uma entidade própria e desempenha um papel específico, cada um é um bloco único que ajuda a definir o comportamento global da aplicação.

Existem quatro tipos diferentes de componentes de aplicação. Cada tipo serve a um propósito diferente e tem um ciclo de vida distinto que define como o componente é criado e destruído, são eles:

Activity

O activity representa uma tela de inteface com o usuário, uma aplicação pode conter várias activitys cada uma com seu propósito e a aplicação pode iniciar de qualquer uma delas se assim for permitido. Um exemplo poderia ser um activity de login, outro de menu e outro de cadastro, a menos que exista algum controle é perfeitamente possível iniciar a aplicação de qualquer uma delas.

Services

Os serviços não possuem interface com o usuário, possuem como propósito executar operações em segundo plano, mesmo quando a aplicação não esta ativa, como por exemplo realizar verificações para a aplicação quando o usuário estiver em outra ou tocar uma música por exemplo

Content provider

Sua função é gerenciar dados do aplicativo, como arquivos ou banco de dados. Ele também é capaz de permitir que outros aplicativos acessem esses dados, um exemplo disso é o content provider do Android que fornece informações de contatos do usuário.

Broadcast receivers

É o componente que recebe mensagens de sistema, como por exemplo desligamento de tela ou bateria fraca, também podem ser usados para criar notificações para o usuário. É comumente usado para iniciar serviços.

 

Ativando componentes

Três dos quatro tipos de componentes activitys, services e broadcast receivers são ativados através de uma mensagem assíncrona chamado intent. Intents são componentes individuais que se ligam uns aos outros em tempo de execução.

Para as activityse services, o intent define a ação a ser executada (por exemplo, para "ver"ou "mandar" alguma coisa), e pode especificar o URI dos dados para agir sobre (entre outras coisas que o componente a ser iniciado necessita de saber ).

Para broadcast receivers, o intent simplesmente define a mensagem a ser (por exemplo, uma transmissão para indicar a bateria do dispositivo é reduzido inclui apenas uma seqüência de ação que indica "a bateria está baixa").

O content provider, não é ativado por intents, ele é ativado por um pedido de ContentResolver. O content resolver manipula todas as operações diretas com o content provider. Isso deixa uma camada de abstração entre o content provider e as informações sobre o componente requerente (por segurança).

 

O arquivo manifest

Para que o Android possa iniciar um componente de nosso aplicativo, ele precisa antes de mais nada conhece-lo, por isso todos os componentes devem ser declarados no AndroidManifest.xml (fica na raiz de nossa aplicação). Além de nossos componentes também devem ser declarados os recursos do aparelho que serão utilizados, como acesso ao cartão SD ou navegação na internet, bibliotecas utilizadas, nivel de API entre outras coisas.

Recursos

Em geral as aplicações são formadas por muito mais do que código, como imagens, sons, estilos, definições de layout, cores, enfim uma infinidade de outras coisas.

Com recursos fica mais fácil realizar uma mudança no estilo das telas por exemplo sem a necessidade de alterar o código da aplicação, para acessar os recursos basicamente é necessário apenas que se conheça seu ID.

Um novo projeto Android vem com três grupos diferentes de recursos, drawable (aqui ficariam as imagens usadas pelo sistema), layout (aquios arquivos XML que definem as telas do sistema) e values (arquivos XML no estili INI, com nome e um valor).

Encerrando

Bom era isso, se você chegou até aqui tenho certeza que agora possui uma ótima noção de como as coisas funcionam no Android, para ver na integra o documento de fundamentos sobre o Andoird (sem tradução meia boca) é só acessar aqui.

Comentários

  1. Interessante!!!

    É por isso que o pessoal escreve um "Bye bye World" após o "Hello World" já que não sabem bem como as coisas funcionam.

    ResponderExcluir
  2. como faço para criar uma função armazenada cujo o parametro é um número decimal de no maximo tres algarismos e que retorne seu valor por extenso?
    P.S se puder me ajudar ficarei muito grato.
    obrigado e até mais.

    ResponderExcluir
  3. Olá Amaury nunca precisei fazer nada nesse sentido, mas encontrei um site onde fizeram (http://pedroabs.wordpress.com/2011/05/24/projeto-extenso-121-cento-e-vinte-e-um/), lá ele explica a lógica e também disponibiliza o código.

    ResponderExcluir

Postar um comentário

Obrigado por Participar do programero, fique a vontade para agradecer, retificar, perguntar ou sugerir.

Mais visitadas

Iniciar e Parar Serviços do Windows (Delphi)

Em certas ocasiões nos deparamos com a necessidade de manipular determinadas atividades do SO, como iniciar ou parar um banco de dados, ou qualquer outro serviço que esteja funcionando no momento. Segue abaixo um código que encontrei na Internet para tal finalidade (não me recordo à fonte, assim que eu a encontrar colocarei). Iniciar Serviço: uses WinSvc; // // start service // // return TRUE if successful // // sMachine: //   machine name, ie: \SERVER //   empty = local machine // // sService //   service name, ie: Alerter // function ServiceStart(   sMachine,   sService : string ) : boolean; var   //   // service control   // manager handle   schm,   //   // service handle   schs   : SC_Handle;   //   // service status   ss     : TServiceStatus;   //   // te...

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Criando sua Primeira Aplicação Web com Python e Docker

  Criando sua Primeira Aplicação Web com Python e Docker Hoje vamos fazer algo prático: criar uma aplicação web simples em Python usando Flask e executá-la dentro de um contêiner Docker. Se você não sabe exatamente o que é Docker ou Flask, não se preocupe! Vou explicar tudo de forma simples para que você consiga acompanhar sem problemas. O que é Docker? Docker é uma ferramenta que permite empacotar aplicações e suas dependências em contêineres, garantindo que elas funcionem da mesma forma em qualquer ambiente. Em outras palavras, com o Docker, você cria um ambiente isolado e padronizado para rodar suas aplicações. Como instalar o Docker Acesse o site oficial do Docker . Baixe e instale a versão apropriada para o seu sistema operacional (Windows, macOS ou Linux). Após a instalação, verifique se está tudo funcionando abrindo um terminal e executando: docker --version Se o Docker estiver instalado corretamente, ele vai exibir a versão instalada. O que é Flask? Flask é um m...